【问题标题】:Finding the max of a list with multiple elements [duplicate]查找具有多个元素的列表的最大值[重复]
【发布时间】:2016-10-04 16:52:04
【问题描述】:

我正在编写一个 Python 程序,它会生成一个类似于下面代码块的列表。用户输入十个数字,这些数字存储在一个列表中。它计算不同对象的数量。每个 ( ) 中的第一个数字是用户输入的数字,第二个值是输入的次数。我需要做的基本上是向用户打印“最常见的数字是 x,输入了 y 次”。

organizedList = [(1.0, 5), (5.0, 3)]
print max(organizedList)

我尝试了一个普通的 max 命令,但它选择了第二个值作为最大值,甚至认为它被选择的频率较低。感谢您的帮助。

【问题讨论】:

  • max 函数将首先查看第一个数字,从那里返回最大值。您可以简单地反转数组中的顺序。
  • @quemeraisc 适用于此特定输入,但绝不是通用的。

标签: python list count max


【解决方案1】:

正如其他答案已经指出的那样,您可以通过设置 key 参数来告诉 max 函数只查看第二个值。要输出结果,您可以这样做:

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

print "The most common number is",x,"which was entered",y,"times."

【讨论】:

  • 这非常有效。谢谢!!
【解决方案2】:

max 使用key 选项,这是一个告诉max 输出基于什么值的函数。

organizedList = [(1.0, 5), (5.0, 3)]
print max(organizedList, key=lambda x: x[1])

这将使用第二个元素来确定最大值。

【讨论】:

  • 注意:你需要括号才能在 python 3 中工作:print (...)
  • @richard 但是由于 OP 没有使用括号,我们可以放心地假设他们使用的是 Python 2。
  • 是的,如果是给 Ron 的便条,以防他来这里寻找答案。
【解决方案3】:

max 有一个 key 参数,您可以使用它来指定应该从哪个元组元素中找到最大值。

>>> max(organizedList, key=lambda x: x[1])
(1.0, 5)

或者,如果你不喜欢匿名函数,你可以使用operator.itemgetter 来使用第二个元素,与

类似
>>> max(organizedList, key=itemgetter(1))
(1.0, 5)

【讨论】:

    【解决方案4】:

    元组列表通常按第一个元素排序,但您可以通过 key 参数更改获取最大元素的方式

    >>> from operator import itemgetter
    >>> organizedList = [(1.0, 5), (5.0, 3)]
    >>> max(organizedList, key=itemgetter(1))
    (1.0, 5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多