1

我想在这篇文章反向字典顺序中做同样的事情。我不明白如何使用 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}

有没有办法在颠倒顺序后重建字典?

提前致谢

4

3 回答 3

2

您的方法的主要问题是原始 dict 不保证其键的任何特定顺序。虽然您可以获得 的mydic项目的快照、颠倒顺序并将结果存储在 中OrderedDict,但其输出将是未定义的(因为输入未定义)。

换句话说,垃圾进垃圾出。

如果您从一个可迭代的键值对开始,那么您可以使用OrderedDict

In [18]: ol = [('n2', 9), ('n1', 3)]

In [19]: OrderedDict(reversed(ol))
Out[19]: OrderedDict([('n1', 3), ('n2', 9)])
于 2012-12-17T23:20:53.863 回答
2

常规 Python 字典不保留任何顺序,因此重新排列键不会有任何用处。

话虽这么说,OrderedDict使用起来真的很简单:

>>> from collections import OrderedDict
>>> 
>>> ol = [('n2', 9), ('n1', 3)]
>>> dc = OrderedDict(ol)
>>> dc
OrderedDict([('n2', 9), ('n1', 3)])
于 2012-12-17T23:21:15.030 回答
0

使用collections.OrderedDict

有序字典就像普通字典一样,但它们会记住插入项目的顺序。当迭代一个有序字典时,项目按照它们的键被第一次添加的顺序返回。

于 2012-12-17T23:22:19.153 回答