Es sieht so aus, als ob die von keys()
und values()
Methoden eines Wörterbuchs zurückgegebenen Listen immer eine 1-zu-1-Zuordnung sind (vorausgesetzt, das Wörterbuch wird zwischen dem Aufruf der beiden Methoden nicht verändert).
Zum Beispiel:
>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
print d[k[i]] == v[i]
True
True
True
Wenn Sie das Wörterbuch zwischen dem Aufruf von keys()
und dem Aufruf von values()
nicht verändern, ist es falsch anzunehmen, dass die obige for-Schleife immer True drucken wird? Ich konnte keine Dokumentation finden, die dies bestätigt.
3 Stimmen
In CPython 3.7 (und höher vermutlich) können Sie sich auf die Iterationsreihenfolge eines Wörterbuchs verlassen, die der Einfügereihenfolge entspricht. mail.python.org/pipermail/python-dev/2017-December/151283.html
2 Stimmen
@BallpointBen Es ist in CPython 3.6 und höher sowie allen anderen Python-Implementierungen ab Python 3.7.