Heim  >  Artikel  >  Backend-Entwicklung  >  Können Sie ein Wörterbuch beim Iterieren mit „iteritems()“ in Python sicher ändern?

Können Sie ein Wörterbuch beim Iterieren mit „iteritems()“ in Python sicher ändern?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 05:47:28606Durchsuche

 Can You Safely Modify a Dictionary While Iterating with `iteritems()` in Python?

Können iterierte Wörterbücher zugrunde liegende Elemente sicher ändern?

Beim Durchlaufen eines Python-Wörterbuchs mit iteritems() können Änderungen am Wörterbuch zu unerwarteten Ergebnissen führen Ergebnisse. Das Entfernen von Elementen (z. B. del d[f(k)]) kann einen „RuntimeError: Wörterbuchgröße während der Iteration geändert“ auslösen.

Offizielle Dokumentation:

Gemäß In der Python-Dokumentation sollte man das Wörterbuch während der Iteration nicht ändern. Die Methode iteritems() durchläuft die Kopie der Schlüssel und Werte des Wörterbuchs, nicht jedoch das zugrunde liegende Wörterbuch selbst. Daher werden direkte Änderungen am Wörterbuch (z. B. das Löschen oder Hinzufügen von Elementen) nicht im Iterator widergespiegelt.

Sichere Vorgehensweisen:

Um dieses Problem zu vermeiden, In der Dokumentation wird die Verwendung von d.copy().items() vorgeschlagen, um vor der Iteration eine unabhängige Kopie des Wörterbuchs zu erstellen. Alternativ kann man eine Liste von Schlüsseln durchlaufen und del d[key] oder d[key] = newValue innerhalb der Schleife verwenden.

Partielle Änderung:

While Das Hinzufügen von Elementen zu neuen Schlüsseln kann zu Problemen führen. Das Ändern vorhandener Werte ist im Allgemeinen sicher. Beachten Sie jedoch, dass das Ändern des Werts an einem vorhandenen Schlüssel dessen Hash-Wert ändern kann, was möglicherweise Auswirkungen auf seine Position im Wörterbuch hat.

Das obige ist der detaillierte Inhalt vonKönnen Sie ein Wörterbuch beim Iterieren mit „iteritems()“ in Python sicher ändern?. 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