„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum ist die Wörterbuchreihenfolge nach Python 3.3 nicht deterministisch?

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

Veröffentlicht am 10.11.2024
Durchsuche:741

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 einer Sicherheitskorrektur, die 2012 implementiert und in Python 3.3 standardmäßig aktiviert wurde. Die zur Behebung von Sicherheitslücken eingeführte Hash-Randomisierung führt dazu, dass die Iterationsreihenfolge von Wörterbüchern und Mengen unvorhersehbar ist und sich bei verschiedenen 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 nicht konsistent ist in Python 3.3 das gleiche Ergebnis liefern, ist die 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 .

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729494257 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3