【发布时间】:2017-03-30 18:06:32
【问题描述】:
所以我有一个元组列表,它是通过压缩两个这样的列表创建的:
zipped =list(zip(neighbors, cv_scores))
max(zipped) 产生
(49, 0.63941769316909292) 其中 49 是最大值。
但是,我对在元组的后一个值(.63941)中找到最大值很感兴趣。
我该怎么做?
【问题讨论】:
标签: list python-3.x tuples max
所以我有一个元组列表,它是通过压缩两个这样的列表创建的:
zipped =list(zip(neighbors, cv_scores))
max(zipped) 产生
(49, 0.63941769316909292) 其中 49 是最大值。
但是,我对在元组的后一个值(.63941)中找到最大值很感兴趣。
我该怎么做?
【问题讨论】:
标签: list python-3.x tuples max
问题在于 Python 按字典顺序比较元组,因此它对第一项进行排序,只有当它们相等时,它才会比较第二项,依此类推。
不过,您可以在 max(..) 函数中使用 key= 来比较第二个元素:
max(zipped,<b>key=lambda x:x[1]</b>)
注意 1:请注意,如果您只对最大值感兴趣,则不必构造
list(..)。您可以使用max(zip(neighbors,cv_scores),key=lambda x:x[1]).注意 2:查找
max(..)需要 O(n)(线性时间),而排序列表需要 O(n log n) .
【讨论】:
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
【讨论】: