我在 Python 3.6 中试着使用 OrderedDict
类型,并对其行为感到惊讶。当我在 IPython 中创建一个简单的 dict
,像这样:
d = dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
我得到:
{'guido': 4127, 'jack': 4098, 'sape': 4139}
作为输出,由于某些原因,它不保留元素实例化时的顺序。现在,当我像这样从 d
创建一个 OrderedDict
:
od = OrderedDict(d)
输出结果为:
OrderedDict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
现在我自问,OrderedDict
构造器如何在实例化d
时知道元素的顺序?它是否总是表现一致,这样我就可以依赖于OrderedDict
中的元素顺序了吗?
我已经阅读了关于Python字典和OrderedDict
的文档,但我没有找到我的问题的答案。
(sys.version
)的输出:
In[22]: sys.version
Out[22]: '3.6.1 (default, Apr 4 2017, 09:40:21) \n[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)]'
3.6
中,dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
不应该得出那样的输出结果。 - Dimitris Fasarakis Hilliard