开发者

Are order of keys() and values() in python dictionary guaranteed to be the same? [duplicate]

This question already has answers here: Python dictionary: are keys() and values() always the same order? (9 answers) Closed 9 years ago.

Does native built-in python dict guarantee that the keys() and values() lists are ord开发者_高级运维ered in the same way?

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

Do I always have d == otherd ?

Either it's true or false, I'm interested in any reference pointer on the subject.

PS: I understand the above property will not be true for every objects that behave like a dictionary, I just wonder for the built-in dict. When I test it looks as if it's true, and it's no surprise because having the same order for keys() and values() is probably the simplest implementation anyway. But I wonder if this behavior was explicitly defined or not.


Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary's history of insertions and deletions. If items(), keys(), values(), iteritems(), iterkeys(), and itervalues() are called with no intervening modifications to the dictionary, the lists will directly correspond.

From the documentation for dict.


Python 2.7 and above have ordered dictionaries, for which your statement:

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

would apply

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜