按照最高值排序字典?
这个问题在这里已经有了答案:
sorted(myDict, key=myDict.get, reverse=True)
这是一种做法:
>>> myDict = {'seven': 7, 'four': 4, 'one': 1, 'two': 2, 'five': 5, 'eight': 8}
>>> sorted(myDict.iterkeys(), key=lambda k: myDict[k], reverse=True)
['eight', 'seven', 'five', 'four', 'two', 'one']
(受这个答案的启发)
它使用内置的功能sorted
(与reverse=True
获得最高到最低),以及key
参数是用来设置排序键的功能。 在这种情况下,它是一个lambda获取相应的字典值,但它可以是几乎任何东西。 例如,您可以使用operator.itemgetter(1)
或myDict.get
(如其他答案所示operator.itemgetter(1)
或任何其他排序函数(不包括值)。
您可以使用items
来获得对键值的列表,并sorted
使用您的标准对它们进行排序:
myList = sorted(myDict.items(), key=lambda x: x[1], reverse=True)
如果你使用ipython,你可以键入myDict。 tabtab
,你会得到所有函数的列表。 您也可以输入print myDict.items.__doc__
并获得快速文档。
关键参数是一个在比较之前应用于元素的函数。 由于items
返回对的列表,并且对对的第二个元素进行排序,所以key是一个从元组中获取第二个元素的函数。
当然,可以使用以下命令来摆脱items
呼叫:
myList = sorted(myDict, key=myDict.get, reverse=True) #posted in another answer
链接地址: http://www.djcxy.com/p/18151.html