根据Dict中的值对字符串列表进行排序

时间:2014-02-11 03:45:11

标签: python list sorting dictionary

我有一个名为frequentItems的字符串列表和一个名为mis的Dict(多项支持值),其值为浮点数。两者之间的关系是frequentItemsi的任何元素都是mis的键,以便mis[frequentItems[i]]返回浮点值。

我想根据frequentItems返回的浮点值对mis[frequentItems[i]]进行排序,但不确定如何使用.sort()sorted()指定此值。我基本上没有使用lambda的经验,但认为这是我需要指定的内容。

2 个答案:

答案 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)