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!