Warum ist die Wörterbuchreihenfolge in Python 3.3 nicht deterministisch?
In Python-Versionen vor 3.3 war die Reihenfolge der Wörterbuchschlüssel jedoch willkürlich konsistent. In Python 3.3 wurde diese Reihenfolge jedoch nicht deterministisch.
Diese Änderung resultiert aus einem Sicherheitsupdate, das 2012 implementiert und in Python 3.3 standardmäßig aktiviert wurde. Die Hash-Randomisierung, die zur Behebung von Sicherheitslücken eingeführt wurde, führt dazu, dass die Iterationsreihenfolge von Wörterbüchern und Mengen unvorhersehbar ist und sich zwischen Python-Ausführungen unterscheidet.
Um die Hash-Randomisierung zu deaktivieren, können Sie die Umgebungsvariable PYTHONHASHSEED auf 0 setzen.
Kontraintuitives Beispiel
Während das Gegenbeispiel in der Frage in Python 3.3 nicht immer das gleiche Ergebnis liefert, ist seine begrenzte Anzahl unterschiedlicher Reihenfolgen auf die Behandlung von Hash-Kollisionen zurückzuführen.
Diese Einschränkung besteht in Python 3.6 und späteren Versionen nicht mehr, wo die Einfügereihenfolge von Wörterbüchern immer beibehalten wird.
Das obige ist der detaillierte Inhalt vonWarum ist die Wörterbuchreihenfolge nach Python 3.3 nicht deterministisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!