字典在未修改的情况下是否保留迭代顺序?

19 投票
7 回答
4883 浏览
提问于 2025-04-15 16:42

如果我在Python中有一个字典,我第一次遍历它,然后过了一段时间再遍历一次,假如我没有在字典里插入、删除或更新任何项目,这样的话,遍历的顺序会保持不变吗?(不过我可能查过一些值。)

7 个回答

5

是的,这里没有随机的成分。其实还有更强的保证——可以查看这里

12

标准的Python dict(字典)和大多数实现一样,通常不保留元素的顺序,因为我们一般是通过键来访问这些元素的。

不过,有时候我们需要按顺序遍历这些元素。在Python 3.1中,collections模块里有一个叫做OrderedDict的东西,它可以保持元素的顺序,而且对性能的影响很小。

31

这里是 dict.items() 的官方说明:

dict.items() 会返回字典中所有(键,值)对的一个副本。

如果在调用 items()keys()values()iteritems()iterkeys()itervalues() 这些方法时,没有对字典进行任何修改,那么返回的列表会直接对应。

我觉得可以合理地假设,如果你只是进行遍历,项的顺序是不会改变的。

撰写回答