我有一本字典,我按值对字典进行了排序。以下是包含样本数据的代码:
mydict = {'b':4, 'a':1, 'd':8, 'c':10}
现在,我想按降序对值进行排序,因此,我使用了以下代码:
sorted_dict = sorted(mydict.iteritems(), key = operator.itemgetter(1), reverse = True)
当我打印sorted_dict时,我得到一个元组列表:
sorted_dict
[('c', 10), ('d', 8), ('b', 4), ('a', 1)]
但是,我希望以字典的形式。所以我使用了以下代码:
dict(sorted_dict)
并得到以下结果:
{'a': 1, 'c': 10, 'b': 4, 'd': 8}
因此,看起来dict()方法是按键自动排序字典。但是,我想要的输出是:
{'c':10, 'd':8, 'b':4, 'a':1}
如何获得此输出?
有人可以帮忙吗?
答案 0 :(得分:3)
您不能使用常规dict
,这不是一个有序的集合。但是,collections.OrderedDict
是!
>>> from collections import OrderedDict
>>> d = OrderedDict([('c', 10), ('d', 8), ('b', 4), ('a', 1)])
>>> d
OrderedDict([('c', 10), ('d', 8), ('b', 4), ('a', 1)])
当然,输出看起来不是很有意义,但它是正确的。您可以按键访问项目并按顺序迭代。