Dict / Set Parsing Order Consistency
Container, die hashable Objekte enthalten (z. B.dict
Tasten oderset
Artikel). Als solches kann ein Wörterbuch nur einen Schlüssel mit dem Wert @ habe1
, 1.0
oderTrue
etc. (Anmerkung: etwas vereinfacht - Hash-Kollisionen sind erlaubt, aber diese Werte werden als gleich angesehen)
Meine Frage lautet: Ist die Analysereihenfolge genau definiert und ist das resultierende Objekt über Implementierungen hinweg vorhersehbar? Zum Beispiel interpretiert OSX Python 2.7.11 und 3.5.1dict
wie so:
>>> { True: 'a', 1: 'b', 1.0: 'c', (1+0j): 'd' }
{True: 'd'}
In diesem Fall scheinen der erste Schlüssel und der letzte Wert erhalten zu sein.
Ähnlich, im Fall vonset
:
>>> { True, 1, 1.0, (1+0j) }
set([(1+0j)])
Hier scheint es, dass diezuletz item bleibt erhalten.
Aber (wie in den Kommentaren erwähnt):
>>> set([True, 1, 1.0])
set([True])
Nun bleibt das erste im Iterable erhalten.
Die Dokumentation stellt fest, dass die Reihenfolge der Elemente (z. B. indict.items
) ist undefiniert, meine Frage bezieht sich jedoch auf das Ergebnis von konstruieren dict
oderset
objects.