【问题标题】:Finding the max value of a list of tuples, (applying max to the second value of the tuple)查找元组列表的最大值,(将最大值应用于元组的第二个值)
【发布时间】: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


    【解决方案1】:

    问题在于 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) .

    【讨论】:

      【解决方案2】:

      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 
      

      【讨论】:

      • 为什么要在 O(n) 中计算最大运行次数时进行排序(甚至就地),而在 O(n log n) 中运行排序我>?
      • @WillemVanOnsem 我认为这个问题不太清楚,所以我添加了排序
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      相关资源
      最近更新 更多