Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在嵌套列表的第二列中查找最大值?_Python_List_Nested_Element_Max - Fatal编程技术网

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()