如何在保持顺序的情况下将元组转换为字典
我有一个字典,并且我已经根据字典里的值进行了排序。下面是带有示例数据的代码:
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}
我该如何得到这个输出呢?
有人能帮忙吗?
1 个回答
4
普通的 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)])
虽然输出的结果看起来不太好理解,但其实是正确的。你可以通过键来访问数据,并且可以按顺序遍历这些键值对。