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

时间:2010-09-08 09:18:07

标签: python dictionary

本机内置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吗?

无论是真还是假,我都对这个主题上的任何参考指针感兴趣。

PS:我理解上面的属性不适用于每个行为都像字典的对象,我只是想知道内置的字典。当我测试它看起来好像是真的,并且毫不奇怪,因为keys()values()具有相同的顺序可能是最简单的实现。但我想知道这种行为是否明确定义了。

2 个答案:

答案 0 :(得分:31)

  

键和值以任意顺序列出,这是非随机的,在Python实现中各不相同,并且取决于字典的插入和删除历史。如果items()keys()values()iteritems()iterkeys()itervalues()被调用而没有对字典进行干预,则列表将会直接对应。

来自the documentation for dict

答案 1 :(得分:4)

Python 2.7及更高版本有ordered dictionaries,您的声明为:

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

将适用