Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lösche ich während der Iteration in Python sicher Elemente aus einem Wörterbuch?

Wie lösche ich während der Iteration in Python sicher Elemente aus einem Wörterbuch?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 19:12:30851Durchsuche

How to Safely Delete Items from a Dictionary During Iteration in Python?

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!

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