[英]Getting the maximum value of element tuple in list of tuples
我有这个代码:
vals = [(1,3,5),(2,2,5),(1,2,6)]
max(vals ,key=itemgetter(1))[2]
我的问题是:为什么它会返回5而不是6? 我需要最后一个元素的最大值。 如果我取max(...)[0]
它给2,如果我取max(...)[1]
它给3,但如果我取max(...)[2]
它给5.为什么这是?
通过使用itemgetter(1)
键入,您要求Python 根据第1个元素的值获取最大元组。 (1,3,5)具有第1指数中最大的元素(即3)。 然后从该元组访问第二个索引(即5)。
要获取最后一个元素的最大值,请使用以下代码:
>>> max([c for a,b,c in vals])
6
key=itemgetter(1)
表示max
检查tuple
的第二个元素以确定哪个tuple
是“max”元组。
所以它选择第一个元组,因为3
大于2
,然后你选择最后一个值,你得到5
如果你想要6
,我猜你可以做max(vals ,key=itemgetter(2))[2]
但是你也可以得到索引2的值并像这样执行最大值:
max(map(itemgetter(2),vals))
因为你丢弃了其他值
如果你想要最后一个元素,只需在代码中使用索引-1
。 在你的代码中, 1
选择每个元组的第二个元素进行max
比较,而2
则不必要地硬编码你的元组长度为3的知识。
>>> vals = [(1,3,5),(2,2,5),(1,2,6)]
>>> max(vals, key=itemgetter(-1))[-1]
>>> 6
x[2]
是元组的3元素,其中max应该被计算, [2]
是最大元组计算的第三个元素
max(vals ,key=lambda x:x[2])[2]
要么
max(vals ,key=itemgetter(2))[2] # you were using itemgetter(1) which would be second element of the tuple
如果我通过索引我这样做:
vals = [(1,3,5),(2,2,5),(1,2,6)]
max(vals[2])
#> 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.