Are order of keys() and values() in python dictionary guaranteed to be the same? [duplicate]
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()
, anditervalues()
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
精彩评论