我有一个这样的列表:
car_cost = [[carA, 10000], [carB, 20000], [carC, 30000]]
如何有效地找到第二个元素最多的元素?
在这种情况下,应该获取索引2或元素
[carC, 30000]
我可以通过
找到第二个元素的最大值 max(car_cost, key = lambda x:x[1])
但是我不知道如何有效地完成其余的工作,请教我如何做到这一点
非常感谢!!
答案 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]))