Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich beim Iterieren in Python sicher Elemente aus einem Wörterbuch löschen?

Wie kann ich beim Iterieren in Python sicher Elemente aus einem Wörterbuch löschen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-02 19:22:30789Durchsuche

How Can I Safely Delete Items From a Dictionary While Iterating in Python?

Elemente aus einem Wörterbuch während der Iteration löschen

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.

Iterieren mit del (Python 2)

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>

Iterieren mit del (Python 3)

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>

Verwenden von pop()

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>

Empfehlungen

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!

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