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