排序python dict,首先按值,然后按键

时间:2016-03-02 04:17:09

标签: python-2.7 dictionary

我想先对值进行排序,首先按值,然后按键。键是一个字符串。

实施例,

>>> words = {'fall':4, 'down':4, 'was':3, 'a':3, 'zebra':2, 'bitter':1, 'betty':1}
>>> sorted(words.items(), key=itemgetter(1,0), reverse=True)
[('fall', 4), ('down', 4), ('was', 3), ('a', 3), ('zebra', 2), ('bitter', 1), ('betty', 1)]

如上所示,dict按值排序,但不按键排序。

感谢。

编辑:我忘了指出我希望值从上到下排序,键从下到上排序。

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题。利用值为数字的事实。

from operator import itemgetter

words = {'fall':4, 'down':4, 'was':3, 'a':3, 'zebra':2, 'bitter':1, 'betty':1}
sorted_words = [v for v in sorted(words.iteritems(), key=lambda(k, v): (-v, k))]
print(sorted_words)

输出:

[('down', 4), ('fall', 4), ('a', 3), ('was', 3), ('zebra', 2), ('betty', 1), ('bitter', 1)]