Как найти список в списке списков, где первый элемент является наибольшим? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть список списков, подобных этому:

a = [[15, 'bane', 'smth'], [13, 'qwe', 'qweqw'], ...]

Мне нужно проверить первый элемент и вывести список с наибольшим первым элементом.

В этом случае:

[15, 'bane', 'smth']

Я пытался использовать amax от NumPy, но мне нужно только получить максимум на основе первого элемента, и это не работает

a = np.amax(a, axis=0)

Я получаю ошибку

cannot perform reduce with flexible type

потому что другие элементы являются строками, я полагаю. Есть ли другой метод, который я могу использовать для этой цели?

Ответы [ 3 ]

7 голосов
/ 30 октября 2019

Я думаю, вы можете просто использовать обычную старую функцию max, так как итерации сравниваются на основе их первого элемента.

a = max(a)
4 голосов
/ 30 октября 2019

Вы можете использовать параметр key в функции max, чтобы указать, что использовать для сортировки. Однако, поскольку это первый пункт, достаточно просто max(a).

>>> max(a, key=lambda sublist: sublist[0])
[15, 'bane', 'smth']
3 голосов
/ 30 октября 2019

Вы можете просто сделать max(map(lambda x: x[0], a)), чтобы сначала выбрать первый элемент массива, а затем взять максимум

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