为什么dict和dict.items()的顺序不同?

发布于 2021-01-29 17:08:51

>>> 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()的顺序应相同。

关注者
0
被浏览
160
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您似乎已经在IPython上对此进行了测试。IPython对各种类型使用其自己的专门的漂亮打印工具,并且dict漂亮打印器在打印之前对键进行排序(如果可能)。该d.items()调用不会对键进行排序,因此输出是不同的。

    在普通的Python会话中,字典repr中各项的顺序将与方法中各项的顺序匹配items。只要不修改字典,字典迭代顺序就应该是稳定的。(此保证未明确扩展到dict的保证repr,但是如果隐式迭代repr与其他形式的dict迭代保持一致,这将令人惊讶。)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看