在嵌套列表中查找第二个元素最大的元素

时间:2019-10-27 07:27:57

标签: python list loops

我有一个这样的列表:

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

如何有效地找到第二个元素最多的元素?

在这种情况下,应该获取索引2或元素

[carC, 30000]

我可以通过

找到第二个元素的最大值
 max(car_cost, key = lambda x:x[1]) 

但是我不知道如何有效地完成其余的工作,请教我如何做到这一点

非常感谢!!

3 个答案:

答案 0 :(得分:1)

max(car_cost, key = lambda x:x[1])返回带有car和数字的列表。您可以使用索引0来获取它

item = max(car_cost, key=lambda x: x[1])
print(item[0]) # carC

答案 1 :(得分:0)

@Guy是最简单的答案,但您也可以这样做:

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

或@Guy解决方案的单线版本:

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

答案 2 :(得分:0)

按照您提出的逻辑,这可能是一种解决方案。

我们在副本列表中获得最大元素,然后将其删除,然后再次寻找最大元素。显然,这不是最有利可图的,但可以避免。

我建议您阅读以下文章。它将帮助您了解正确的逻辑。

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