Heim > Backend-Entwicklung > Python-Tutorial > 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
Freigeben: 2024-10-30 19:12:30
Original
969 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
<code class="python">for k, v in mydict.items():
    if v == 3:
        del mydict[k]</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage