我有一个名为frequentItems
的字符串列表和一个名为mis
的Dict(多项支持值),其值为浮点数。两者之间的关系是frequentItems
,i
的任何元素都是mis
的键,以便mis[frequentItems[i]]
返回浮点值。
我想根据frequentItems
返回的浮点值对mis[frequentItems[i]]
进行排序,但不确定如何使用.sort()
或sorted()
指定此值。我基本上没有使用lambda
的经验,但认为这是我需要指定的内容。
答案 0 :(得分:4)
您甚至不需要lambda
,只需使用dict.get
即可获取与列表元素对应的值。
frequentItems.sort(key = mis.get)
示例:强>
mis, frequentItems = {1: 3.4, 5: 3.14, 3: 7.5}, [1, 3, 5]
frequentItems.sort(key = mis.get)
print(frequentItems) # [5, 1, 3]
答案 1 :(得分:1)
def getItem(itemName):
return mis.get(itemName)
frequentItems.sort(key=getItem)
你可以粗略重写getItem
作为lambda函数
getItem = lambda itemName:mis.get(itemName,None)
frequentItems.sort(key=getItem)
你可以直接将它作为关键字包含在lambda
中frequentItems.sort(key= lambda itemName:mis.get(itemName,None))
你可以将你的论点简化为一个字母
frequentItems.sort(key= lambda i:mis.get(i,None))
虽然lambdas较短,但可能较慢
(或者使用thefourtheye为这个实际问题提供更好的解决方案:P)