我有一个清单:
l = [("abc",0.9), ("abc1",0.95), ("abc2",0.8), ("abc3",0.9)]
我希望获得具有最高第二元组值的元组, 即
("abc1", 0.95)
实现这一目标的最佳方式是什么?
答案 0 :(得分:3)
您使用max()
function的key
参数:
max(l, key=lambda i: i[1])
您也可以使用operator.itemgetter()
在此处生成可调用对象:
from operator import itemgetter
max(l, key=itemgetter(1))
演示:
>>> l=[("abc",0.9),("abc1",0.95),("abc2",0.8),("abc3",0.9)]
>>> max(l, key=lambda i: i[1])
('abc1', 0.95)
>>> from operator import itemgetter
>>> max(l, key=itemgetter(1))
('abc1', 0.95)
答案 1 :(得分:2)
你可以简单地使用max
函数,key
参数作为一个函数,它可以给每个元组的第二个元素进行比较,就像这样
print max(l, key=lambda x: x[1])
# ('abc1', 0.95)
否则,您可以使用内置itemgetter
运算符,如此
from operator import itemgetter
print max(l, key=itemgetter(1))
# ('abc1', 0.95)
答案 2 :(得分:2)
在内置key
函数中使用max
关键字参数:您可以向它传递一个函数,该函数查看元组的索引1(即第二个元素)处的元素:
>>> max(l, key=lambda x: x[1])
("abc1", 0.95)