Python字典中的keys()和values()顺序是否保证相同?

18 投票
2 回答
4192 浏览
提问于 2025-04-16 03:50

Python内置的字典(dict)是否保证keys()values()返回的列表顺序是一样的呢?

d = {'A':1, 'B':2, 'C':3, 'D':4 } # or any other content
otherd = dict(zip(d.keys(), d.values()))

我总是能得到d == otherd这个结果吗?

这个要么是真的,要么是假的,我对这个话题的任何参考资料都很感兴趣。

附注:我明白这个特性并不适用于所有像字典那样的对象,我只是想知道内置的字典是否如此。当我测试的时候,似乎确实是这样,而且这也不奇怪,因为让keys()values()保持相同的顺序可能是最简单的实现方式。不过,我想知道这种行为是否有明确的定义。

2 个回答

4

Python 2.7 及以上版本有一种叫做有序字典的东西,意思是你提到的那个说法:

d == dict(zip(d.keys(), d.values()))

是适用的。

30

字典里的键和值是以一种特定的顺序排列的,这个顺序不是随机的,而是会根据不同的Python版本有所不同,并且还会受到字典中插入和删除操作的影响。如果在没有对字典进行任何修改的情况下调用 items()keys()values()iteritems()iterkeys()itervalues(),那么返回的列表会直接对应上。

来自 字典的文档

撰写回答