Python 在嵌套列表的第二列中查找最大值?
我有这样一份清单:Python 在嵌套列表的第二列中查找最大值?,python,list,nested,element,max,Python,List,Nested,Element,Max,我有这样一份清单: alkaline_earth_values = [['beryllium', 4], ['magnesium', 12], ['calcium', 20], ['strontium', 38], ['barium', 56],
alkaline_earth_values = [['beryllium', 4],
['magnesium', 12],
['calcium', 20],
['strontium', 38],
['barium', 56],
['radium', 88]]
如果我只使用
max(list)
方法,它将返回答案'srontium'
,如果我试图找到max名称,这将是正确的,但是我试图返回整数最高的元素。使用键
参数
max(alk..., key=operator.itemgetter(1))
这种方法之所以有效,是因为max函数的关键参数指定了一个函数,当max希望知道搜索max元素所依据的值时,该函数将被调用。max将为序列中的每个元素调用该函数。和lambda x:x[1]
创建一个小函数,该函数接受一个列表并返回第一个(计数从零开始)元素。所以
k = lambda x: x[1]
就是说
def k(l):
return l[1]
但是在这种情况下使用起来又短又好。假设列表中的项目实际上仍然是一个数字是相当棘手的。如果数字已变成字符串,
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])
返回['铍','9']
max(alkaline_earth_values, key=lambda x: float(x[1]))
当你认为大熊猫或麻雀的速度为“:时,
会起到作用。
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()
你介意用外行的话解释一下这是怎么回事吗。我想我理解x:x[1]定义了位置,因为如果我用0替换1,它将返回正确的最大字符串值。但是,尽管查看了Python库,但我并不完全理解key和lambda的意义。key是max()内置函数的关键字参数。关键参数应该是一个可调用的(函数、lambda等),给定iterable的一个元素,它将返回一个用于比较的值。“lambda x:x[1]”创建了一个匿名函数(lambda),它返回支持Python切片表示法的第二个元素。因此,如果我在一个列表中有另一个嵌套级别,比如碱土值=[['铍',4,['a',1]],['镁',12,['b',2]],['钙',20,['c',3]],['锶38['d',4]],['钡',56['e',5]],['radium',88['f',1]]]我会用max(碱土金属,key=lambda x:x[4]来按三重嵌套整数排序吗?你的意思是值1,2,3,4,5,1?在这种情况下,你会这样做:key=lambda x:x[2][1]。因为你首先要取['berylium',4[a,1]]的第二个元素,即[a,1],然后你将继续使用该列表的第一个元素,即1。或者它是print(max(碱金属,key=lambda x:x[2][1])这里的答案非常好,但可能也值得一看,这是一个关闭的副本,但有一些有用的答案与这些不同。
max(碱土值)
实际上返回['sr',38]
,因此它为您提供了具有最大值的名称和值对。如果多个列表具有与元素相同的值,lambda
如何打印复制?如果多个列表具有与元素相同的值,itemgetter
如何打印复制?如果多个列表具有与元素相同的值元素。熊猫如何打印副本?
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()