从元素最小值的元组列表中提取元组的优雅方式



我有一个元组列表,我希望从中获得索引1处最小值的元组。例如,如果我的列表是:

a =[('a', 2), ('ee', 3), ('mm', 4), ('x', 1)]

我希望返回的元组是('x', 1)

目前我正在使用sorted函数来获得这样的结果:

min=sorted(a, key=lambda t: t[1])[0]

有更好的方法吗?可能有min功能?

您可以将min()函数与key参数一起使用,以便在列表中找到最小值的元组。没有必要对列表进行排序。因此,您的min呼叫应该是:

>>> min(a, key=lambda t: t[1])
('x', 1)

最好使用operator.itemgetter()而不是lambda表达式;因为itemgetter相对较快。在这种情况下,对min函数的调用应该类似于:

>>> from operator import itemgetter
>>> min(a, key=itemgetter(1))
('x', 1)

注意:min()是Python中的一个内置函数。您不应该将其用作变量名。

这也会起作用:

min([x[::-1] for x in a])[::-1]
# ('x', 1)

最新更新