所以我有一个元组列表,我是通过压缩两个列表创建的:
zipped =list(zip(neighbors, cv_scores))
max(zipped)
产生
(49, 0.63941769316909292)
其中49是最大值。
但是,我很有兴趣在元组的后一个值(.63941)中找到最大值。
我该怎么做?
答案 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