Does native built-in python dict guarantee that the keys() and values() lists are ordered 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.