Heim >Backend-Entwicklung >Python-Tutorial >Warum ist die Wörterbuchreihenfolge nach Python 3.3 nicht deterministisch?

Warum ist die Wörterbuchreihenfolge nach Python 3.3 nicht deterministisch?

Linda Hamilton
Linda HamiltonOriginal
2024-10-21 15:22:02422Durchsuche

Why Is Dictionary Ordering Non-Deterministic Post-Python 3.3?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn