给出这样的列表列表:
[["fileA",7],["fileB",4],["fileC",17],["fileD",15]]
您如何返回与最小值关联的第一个元素?在这个例子中是“fileB”,因为它具有最小的值(4)。我猜最简单的方法是使用列表理解。
答案 0 :(得分:8)
实际上,列表理解不是最好的工具。相反,您应该使用min
,key function和operator.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'