【问题标题】:Get the max value on a list of tuples获取元组列表的最大值
【发布时间】:2018-08-27 23:30:53
【问题描述】:

我有一个元组列表:

card_list= [(2, (1, S)), (0, (12, H)), (1, (5, C)]

此列表包含卡片:(cardindex, (value, suit)) 其中 cardindex 是存储卡片位置的索引,但与我的特定问题无关。

所以在示例中,列表中有 3 张卡片:

  • (2, (1, S)) = 黑桃 A,索引为 2。
  • (0, (12, H)) = 国王 指数为 0 的红心
  • (1, (5, C)) = 5 个索引为 1 的俱乐部

好吧,我的问题是:我希望获得具有最大值的项目,这是,我必须获得项目:(0,(12,H))

我的尝试是:

CardWithHighestValue= max(card_list,key=itemgetter(1)[0])

但我得到了物品或价值?还有最重要的:那句话真的正确吗?

提前致谢。

【问题讨论】:

  • 所以你只想要价值最高的卡吗?如果有2个相同的值,你会在西装上抢七吗?我认为您不太了解itemgetter。它返回一个函数,因此第 0 个索引没有任何意义。
  • meh.... 闻起来像家庭作业。在 SO 上搜索类似的列表操作事件。 idownvotedbecau.se/noresearch
  • @Paul Rooney 我会在代码的另一部分(之前)中处理西装,可能会分离西装列表然后进行比较。

标签: python list tuples


【解决方案1】:

替换

CardWithHighestValue= max(card_list,key=itemgetter(1)[0])

CardWithHighestValue= max(card_list,key=itemgetter(1))

演示

from operator import itemgetter
card_list= [(2, (1, "S")), (0, (12, "H")), (1, (5, "C"))]
print max(card_list,key=itemgetter(1)) 

card_list= [(2, (1, "S")), (0, (4, "H")), (1, (5, "C"))]
print max(card_list,key=itemgetter(1))

输出:

(0, (12, 'H'))
(1, (5, 'C'))

【讨论】:

  • 终于简单了!我以为我必须指出子元组的索引才能在那里搜索最大值,但没有!
  • 不客气 :)。如果它解决了您的问题,请接受。谢谢
【解决方案2】:

你也可以使用匿名函数作为键:

演示:

print(max(card_list, key=lambda x:x[1]))

输出:

(0, (12, 'H'))

【讨论】:

  • 根据 stackoverflow 中类似问题中的其他一些帖子,我想这会慢一些。
【解决方案3】:

试试这个:

lst=[(1,('a',10)), (2,('b',10)),(10,('a',10)), (3,('a',10))]

所以

print("min: ", min(lst)[0]) # min: 1

print("max: ", max(lst)[0]) # max:  10

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多