返回列表列表中的最小元素值

时间:2014-01-21 00:10:46

标签: python

给出这样的列表列表:

[["fileA",7],["fileB",4],["fileC",17],["fileD",15]]

您如何返回与最小值关联的第一个元素?在这个例子中是“fileB”,因为它具有最小的值(4)。我猜最简单的方法是使用列表理解。

4 个答案:

答案 0 :(得分:8)

实际上,列表理解不是最好的工具。相反,您应该使用minkey functionoperator.itemgetter

>>> from operator import itemgetter
>>> lst = [["fileA",7],["fileB",4],["fileC",17],["fileD",15]]
>>> min(lst, key=itemgetter(1))
['fileB', 4]
>>> min(lst, key=itemgetter(1))[0]
'fileB'
>>>

答案 1 :(得分:3)

无需导入任何内容即可:

min(lst, key = lambda x: x[1])[0]

答案 2 :(得分:1)

我提出了这个奇怪的想法,除了简单的生成器表达式之外什么都不使用:

min((x[1], x[0]) for x in lst)[1]

它基于以下事实:默认情况下,最小化是在元组/列表的第一个元素上完成的。

答案 3 :(得分:1)

你应该只是将数据转换为字典,因为这似乎比列表列表更明智。然后,您可以更轻松地操作和访问您的数据。

myLists = [["fileA",7],["fileB",4],["fileC",17],["fileD",15]]
myDict = dict(myLists)
min(myDict, key=myDict.get)
# 'fileB'