Sort dict by highest value?
本问题已经有最佳答案,请猛点这里访问。
我有一个带字符串键和int值的dict。有没有什么方法可以让我拿着这个听写本,用它来从最高到最低的键列表?
例子:
1 2 3 4 | >>> myDict = {'seven': 7, 'four': 4, 'one': 1, 'two': 2, 'five': 5, 'eight': 8} >>> myList = myDict.sortNumericallyByKeys >>> myList ['eight', 'seven', 'five', 'four', 'two', 'one'] |
1 | sorted(myDict, key=myDict.get, reverse=True) |
有一种方法可以做到:
1 2 3 | >>> 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'] |
(受到这个答案的启发)
它使用了内置的函数
另一个变化:
1 2 3 4 | import operator d = {'q':2, 'x':1, 'b':10} s = sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True) |
编辑:
我有点误解了这个问题。我的解决方案返回一个元组(键、值)列表,而不仅仅是字符串列表。
作为弥补的一个额外好处,请看一下
您可以使用
1 | myList = sorted(myDict.items(), key=lambda x: x[1], reverse=True) |
如果你使用的是ipython,你可以输入mydict.
关键参数是一个在进行比较之前应用于元素的函数。由于
当然,可以通过以下方式消除
1 | myList = sorted(myDict, key=myDict.get, reverse=True) #posted in another answer |