Найти элемент с наибольшим вторым элементом во вложенном списке - PullRequest
2 голосов
/ 27 октября 2019

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

 car_cost = [[carA, 10000], [carB, 20000], [carC, 30000]]

как мне эффективно найти элемент, который имеет максимальный второй элемент?

в этом случае должен быть индекс 2 или элемент

[carC, 30000]

Я могу найти максимальное значение второго элемента по

 max(car_cost, key = lambda x:x[1]) 

Но я нене знаю, как эффективно делать остальное, пожалуйста, покажи мне, как я могу это сделать

Большое спасибо !!!

Ответы [ 3 ]

1 голос
/ 27 октября 2019

max(car_cost, key = lambda x:x[1]) возвращает список с car и номером. Вы можете получить его с индексом 0

item = max(car_cost, key=lambda x: x[1])
print(item[0]) # carC
0 голосов
/ 27 октября 2019

следуя предложенной вами логике, это было бы возможным решением.

Мы получаем максимальный элемент в списке копий, удаляем его и снова ищем максимум. Очевидно, что это не самый выгодный вариант, но он помогает убраться с дороги.

Я рекомендую вам прочитать следующую статью. Это поможет вам понять правильную логику.

https://www.geeksforgeeks.org/python-program-to-find-second-largest-number-in-a-list/

А вот код:

carA = 1
carB = 2
carC = 3

car_cost = [[carA, 10000], [carB, 20000], [carC, 30000]]
copy = car_cost
copy.remove(max(car_cost, key = lambda x:x[1]))
print(max(copy, key = lambda x:x[1]))
0 голосов
/ 27 октября 2019

@ Guy имеет самый простой ответ, но вы также можете сделать:

print(next(iter(max(car_cost, key=lambda x: x[1]))))

Или однострочную версию решения @ Guy:

print(max(car_cost, key=lambda x: x[1])[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...