Найти максимальное значение во втором столбце вложенного списка? - PullRequest
26 голосов
/ 26 января 2011

У меня есть такой список:

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

Если я просто использую метод max(list), он вернет ответ 'strontium', что было бы правильно, если бы я пытался найти максимум name , однако я пытаюсь вернуть элемент, чье целое число самое высокое.

Ответы [ 4 ]

53 голосов
/ 26 января 2011
max(alkaline_earth_values, key=lambda x: x[1])

Причина, по которой это работает, заключается в том, что аргумент key функции max определяет функцию, которая вызывается, когда max хочет узнать значениепо которому будет искать максимальный элемент. max вызовет эту функцию для каждого элемента в последовательности.И lambda x: x[1] создает небольшую функцию, которая берет список и возвращает первый элемент (отсчет начинается с нуля).Так что

k = lambda x: x[1]

- это то же самое, что сказать

def k(l):
  return l[1]

, но короче и приятно использовать в таких ситуациях.

7 голосов
/ 26 января 2011

Используйте аргумент key.

max(alk..., key=operator.itemgetter(1))
0 голосов
/ 28 марта 2019

Для высокой скорости рассмотрите панд или 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()
0 голосов
/ 04 февраля 2019

довольно сложно предположить, что элемент в списке на самом деле все еще число.Если числа стали строками, 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]))

выполнит трюккогда вы уверены, что это будет число

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...