Es ist oft notwendig, den Inhalt eines Wörterbuchs zu ändern, während darüber iteriert wird. Das Löschen von Elementen direkt während der Iteration kann jedoch zu Fehlern oder inkonsistenten Ergebnissen führen.
In Python 2 kann das Löschen von Elementen mit del während der Iteration zu Problemen aufgrund des Iterators führen erwartet, dass die Größe des Wörterbuchs konstant bleibt. Dieses Verhalten führt zu einem RuntimeError. Stattdessen wird die Verwendung der Methoden „keys“ oder „items“ empfohlen:
<code class="python">for k in mydict.keys(): if k == val: del mydict[k] # or for k, v in mydict.items(): if v == val: del mydict[k]</code>
In Python 3 gibt mydict.keys() einen Iterator und keine Liste zurück. Das Ändern des Wörterbuchs während der Iteration führt zu einem RuntimeError. Um dies zu vermeiden, konvertieren Sie den Iterator vor der Verwendung von del in eine Liste:
<code class="python">for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
Eine andere Möglichkeit besteht darin, die Methode pop() zum Entfernen von Elementen zu verwenden:
<code class="python">while mydict: k, v = mydict.popitem() if v == 3: mydict[k] = v # or for k in mydict.copy(): if mydict[k] == 3: mydict.pop(k)</code>
Für Python 3 wird die Verwendung der Methoden „keys“ oder „items“ mit einer Listenkonvertierung empfohlen, um Laufzeit zu vermeiden Fehler. Für Python 2 sollten die Methoden „keys“ oder „items“ direkt verwendet werden, um das Wörterbuch sicher zu ändern.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Iterieren in Python sicher Elemente aus einem Wörterbuch löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!