Heim > Artikel > Backend-Entwicklung > Wie lösche ich während der Iteration in Python sicher Elemente aus einem Wörterbuch?
Elemente aus einem Wörterbuch löschen, während in Python iteriert wird
Beim Arbeiten mit Wörterbüchern in Python kann es vorkommen, dass Sie Elemente entfernen müssen die während der Iteration bestimmte Kriterien erfüllen. Auch wenn es intuitiv scheinen mag, dass es ausreichen würde, direkt über das Wörterbuch zu iterieren und die gefundenen Elemente zu löschen, ist dieser Ansatz problematisch.
Herausforderungen beim direkten Löschen während der Iteration
In Python 3 löst beim direkten Löschen von Elementen aus einem Wörterbuch während der Iteration einen RuntimeError aus. Dies liegt daran, dass eine Änderung der Wörterbuchgröße während der Iteration zu Fehlfunktionen des Iterators führt.
In Python 2 führt dieser direkte Löschansatz zu einem Fehler, wenn das zu löschende Element das nächste Element in der Iterationssequenz ist.
Lösungen
Um Elemente während der Iteration sicher aus einem Wörterbuch zu löschen, finden Sie hier empfohlene Lösungen:
Python 3:
Konvertieren Sie die Wörterbuchschlüssel vor der Iteration mithilfe von list(mydict.keys()) in eine Liste. Dadurch können Sie die Liste durchlaufen, während Sie Änderungen am Wörterbuch vornehmen:
<code class="python">for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
Python 2:
Verwenden Sie die Methoden „keys()“ oder „items()“, um Erstellen Sie eine Liste von Schlüsseln bzw. Tupeln von Schlüssel-Wert-Paaren. Sie können diese Listen dann sicher durchlaufen, um Elemente zu entfernen, ohne den Iterator zu unterbrechen:
<code class="python">for k in mydict.keys(): if k == 'two': del mydict[k]</code>
<code class="python">for k, v in mydict.items(): if v == 3: del mydict[k]</code>
Das obige ist der detaillierte Inhalt vonWie lösche ich während der Iteration in Python sicher Elemente aus einem Wörterbuch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!