在嵌套列表的第二列中查找最大值?

时间:2011-01-26 00:37:23

标签: python list nested element max

我有一个这样的清单:

alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20],
                         ['strontium', 38], ['barium', 56], ['radium', 88]]

如果我只是使用max(list)方法,它会返回答案'strontium',如果我试图找到max 名称,这将是正确的,但是我我试图返回整数最高的元素。

4 个答案:

答案 0 :(得分:53)

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

这样做的原因是因为 max 函数的 key 参数指定了当 max 想要知道值时调用的函数通过它搜索最大元素。 max 将为序列中的每个元素调用该函数。 lambda x: x[1]创建一个小函数,它接受一个列表并返回第一个(从零开始计数)元素。所以

k = lambda x: x[1]

与说

相同
def k(l):
  return l[1]

但在这种情况下使用更短更好。

答案 1 :(得分:7)

使用key参数。

max(alk..., key=operator.itemgetter(1))

答案 2 :(得分:0)

假设列表中的项实际上仍然是数字是相当棘手的。如果数字已变成字符串,则max()将返回第一个数字最高的“值”:

alkaline_earth_values = [['beryllium', '9'], ['magnesium', '12'],['calcium', '20'],
                         ['strontium', '38'], ['barium', '56'], ['radium', '88']]
max(alkaline_earth_values, key=lambda x: x[1])

返回['beryllium', '9']

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

,当您确定将是一个数字时,它将成功解决问题

答案 3 :(得分:0)

对于高速,请考虑使用pandas或numpy:

Import pandas as pd
alkaline_earth_values = [['beryllium', 4], ['magnesium', 12],['calcium', 20],
                     ['strontium', 38], ['barium', 56], ['radium', 88]]
pd.DataFrame(alkaline_earth_values)[1].max()