查找元组列表的最大值,(将max应用于元组的第二个值)

时间:2017-03-30 18:06:32

标签: list python-3.x tuples max

所以我有一个元组列表,我是通过压缩两个列表创建的:

zipped =list(zip(neighbors, cv_scores))

max(zipped)产生     (49, 0.63941769316909292)其中49是最大值。

但是,我很有兴趣在元组的后一个值(.63941)中找到最大值。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

问题是Python 按字典顺序比较元组所以它在第一个项目上进行排序,并且只有在这些项目是等效的时候,才会比较第二个项目,依此类推。

然而,你可以使用key=函数中的 max(..) 比较第二个元素:

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

注1 :请注意,如果您只对最大值感兴趣,则不必构建list(..)。您可以使用   max(zip(neighbors,cv_scores),key=lambda x:x[1])

     

注2 :在 O(n)(线性时间)中查找max(..)次运行,而对列表进行排序则在 O(n log)中运行n)的

答案 1 :(得分:1)

max(zipped)[1] #returns second element of the tuple

这可以解决您的问题,以防您想要对数据进行排序 并找到可以使用itemgetter

的最大值
from operator import itemgetter
zipped.sort(key=itemgetter(1), reverse = True)
print(zipped[0][1]) #for maximum