【发布时间】:2017-01-12 06:47:50
【问题描述】:
>>> d = {'A':1, 'b':2, 'c':3, 'D':4}
>>> d
{'A': 1, 'D': 4, 'b': 2, 'c': 3}
>>> d.items()
[('A', 1), ('c', 3), ('b', 2), ('D', 4)]
当我调用 d.items() 时,订单是否会随机化两次?或者它只是以不同的方式随机化?有没有其他方法可以使 d.items() 返回与 d 相同的顺序?
编辑:似乎是一个 IPython 的东西,它自动对字典进行排序。通常 dict 和 dict.items() 应该是相同的顺序。
【问题讨论】:
-
字典没有固有的顺序,其元素的具体顺序是一个实现细节,取决于字典的历史。如果顺序很重要,请使用有序的字典。如果没关系,不要依赖它。
-
d.keys() 和 d.items() 的顺序将匹配(ref)
-
无法复制。
d和d.items()在我尝试时都以相同的顺序显示。你确定这些在你的测试中实际上是同一个字典吗?你确定你没有对显示的语句之间的字典做任何事情吗? -
您在问题中显示的行是否都在同一个解释器会话中运行?最新版本的 Python 随机化字符串的哈希值,因此您在字典中看到键的顺序(即使是完全相同的创建方式)在会话之间也会有所不同。
-
进一步测试似乎表明这是 IPython 特有的东西。
标签: python python-2.7 dictionary ipython