我想在这篇文章reverse dictionary order中做同样的事情。我不明白如何使用OrderedDict。我用反向列表中使用的dict()方法尝试了这段代码 但它给了我最初的字典。
mydic = {'n1': 3, 'n2': 9}
ol = mydic.items()
ol.reverse()
print(ol)
dc = dict(ol)
print(dc)
结果我得到了:
ol >> [('n2', 9), ('n1', 3)]
dc >> {'n1': 3, 'n2': 9}
有没有办法在撤销订单后重建字典?
提前致谢
答案 0 :(得分:2)
您的方法的主要问题是原始字典不保证其密钥的任何特定顺序。虽然您可以获取mydic
项的快照,反转顺序,并将结果存储在OrderedDict
中,但输出将是未定义的(因为输入未定义)。
换句话说,垃圾中的垃圾。
如果您从一组可重复的键值对开始,那么您可以使用OrderedDict
:
In [18]: ol = [('n2', 9), ('n1', 3)]
In [19]: OrderedDict(reversed(ol))
Out[19]: OrderedDict([('n1', 3), ('n2', 9)])
答案 1 :(得分:2)
常规Python词典不保留任何顺序,因此重新排列键不会有用。
话虽如此,OrderedDict
使用起来非常简单:
>>> from collections import OrderedDict
>>>
>>> ol = [('n2', 9), ('n1', 3)]
>>> dc = OrderedDict(ol)
>>> dc
OrderedDict([('n2', 9), ('n1', 3)])
答案 2 :(得分:0)
有序词典就像常规词典一样,但它们记住了项目的插入顺序。迭代有序字典时,项目按照其键首次添加的顺序返回。