繁体   English   中英

获取元组列表中元素元组的最大值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM