Heim >Backend-Entwicklung >Python-Tutorial >Wie entferne ich Elemente während der Iteration sicher aus einem Wörterbuch?
Vermeiden des Fehlers „RuntimeError: Wörterbuchgröße während der Iteration geändert“ bei Wörterbuchänderungen
Beim Durchlaufen eines Wörterbuchs kann das Hinzufügen oder Entfernen von Einträgen dazu führen zum Fehler „RuntimeError: Größe des Wörterbuchs während der Iteration geändert“. In diesem Artikel wird ein Szenario untersucht, in dem Sie Schlüssel-Wert-Paare mit leeren Listenwerten aus einem Wörterbuch entfernen möchten.
Problemstellung:
Gegeben sei ein Wörterbuch d mit Schlüssel- Wertepaare, bei denen die Werte Listen sind, möchten Sie Schlüssel-Wert-Paare entfernen, bei denen die Werte leere Listen sind. Der Versuch, dies jedoch mithilfe einer for-Schleife mit bedingten Prüfungen zu tun, führt jedoch zu dem oben genannten Fehler.
Lösung:
Um diesen Fehler zu vermeiden, können Sie eine Kopie von erstellen die Tasten des Wörterbuchs mithilfe der Funktion list(). Dadurch wird eine separate Liste von Schlüsseln erstellt, über die unabhängig von den Änderungen des Wörterbuchs iteriert werden kann:
<code class="python">for i in list(d): if not d[i]: d.pop(i)</code>
Alternativer Ansatz für Python 2.x:
In Python 2 .x, der Aufruf der .keys()-Methode für ein Wörterbuch gab eine Kopie der Schlüssel zurück. Daher könnten Sie den folgenden Ansatz verwenden:
<code class="python">for i in d.keys():</code>
Hinweis für Python 3.x:
In Python 3.x gibt die .keys()-Methode zurück ein Ansichtsobjekt anstelle einer Kopie. Folglich funktioniert der zweite Ansatz in Python 3.x nicht.
Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente während der Iteration sicher aus einem Wörterbuch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!