如何按值降序对python字典排序。如果两个值相同,则按字典顺序对项目排序?

时间:2019-03-20 08:54:55

标签: python

dictionary={'b': 5, 'a': 2, 'k': 5}

正确的输出应为:dictionary = {'b':5,'k':5,'a':2}

使用以下方法:

sorted(dictionary.items(), key=itemgetter(1), reverse=True)

但输出为{'k': 5, 'b': 5, 'a': 2}

edit1:我正在使用Python 3

1 个答案:

答案 0 :(得分:0)

您的python版本可能无法保持您输入键/值对的顺序。在这种情况下,您可以使用collections.OrderedDict

from operator import itemgetter
from collections import OrderedDict

dictionary={'b': 5, 'a': 2, 'k': 5}

s = OrderedDict(sorted(dictionary.items(), key=itemgetter(1), reverse=True))
print(s)
# OrderedDict([('b', 5), ('k', 5), ('a', 2)])

如果您的python版本是<= 3.5,那么dict将失去顺序;在python 3.6中,顺序维护被视为实现细节,不应依赖于此。 starting from python 3.7 this is considered成为语言规范的一部分。

因此从python 3.7开始,您的代码将不需要OrderedDict,并且可以使用常规dict