Finding max value in the second column of a nested

2019-01-03 16:58发布

I have a list like this:

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

If I simply use the max(list) method, it will return the answer 'strontium', which would be correct if I was trying to find the max name, however I'm trying to return the element whose integer is highest.

2条回答
孤傲高冷的网名
2楼-- · 2019-01-03 17:39
max(alkaline_earth_values, key=lambda x: x[1])

The reason this works is because the key argument of the max function specifies a function that is called when max wants to know the value by which the maximum element will be searched. max will call that function for each element in the sequence. And lambda x: x[1] creates a small function which takes in a list and returns the first (counting starts from zero) element. So

k = lambda x: x[1]

is the same as saying

def k(l):
  return l[1]

but shorter and nice to use in situations like this.

查看更多
爱情/是我丢掉的垃圾
3楼-- · 2019-01-03 17:41

Use the key argument.

max(alk..., key=operator.itemgetter(1))
查看更多
登录 后发表回答