【发布时间】:2014-12-31 07:35:42
【问题描述】:
我有一个清单:
l = [("abc",0.9), ("abc1",0.95), ("abc2",0.8), ("abc3",0.9)]
我想得到第二个元组值最高的元组, 即
("abc1", 0.95)
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: python python-2.7 tuples max
我有一个清单:
l = [("abc",0.9), ("abc1",0.95), ("abc2",0.8), ("abc3",0.9)]
我想得到第二个元组值最高的元组, 即
("abc1", 0.95)
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: python python-2.7 tuples max
您可以将key 参数用于max() function:
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)
【讨论】:
在内置的max 函数中使用key 关键字参数:您可以向它传递一个函数,该函数查看元组索引1(即第二个元素)处的元素:
>>> max(l, key=lambda x: x[1])
("abc1", 0.95)
【讨论】:
您可以简单地使用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)
【讨论】: