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

Wie entferne ich Elemente während der Iteration sicher aus einem Wörterbuch?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 02:34:30355Durchsuche

How to Safely Remove Items from a Dictionary During Iteration?

Vermeiden des Fehlers „RuntimeError: Wörterbuchgröße während der Iteration geändert“ bei Wörterbuchänderungen

Beim Durchlaufen eines Wörterbuchs kann das Hinzufügen oder Entfernen von Einträgen dazu führen zum Fehler „RuntimeError: Größe des Wörterbuchs während der Iteration geändert“. In diesem Artikel wird ein Szenario untersucht, in dem Sie Schlüssel-Wert-Paare mit leeren Listenwerten aus einem Wörterbuch entfernen möchten.

Problemstellung:

Gegeben sei ein Wörterbuch d mit Schlüssel- Wertepaare, bei denen die Werte Listen sind, möchten Sie Schlüssel-Wert-Paare entfernen, bei denen die Werte leere Listen sind. Der Versuch, dies jedoch mithilfe einer for-Schleife mit bedingten Prüfungen zu tun, führt jedoch zu dem oben genannten Fehler.

Lösung:

Um diesen Fehler zu vermeiden, können Sie eine Kopie von erstellen die Tasten des Wörterbuchs mithilfe der Funktion list(). Dadurch wird eine separate Liste von Schlüsseln erstellt, über die unabhängig von den Änderungen des Wörterbuchs iteriert werden kann:

<code class="python">for i in list(d):
    if not d[i]:
        d.pop(i)</code>

Alternativer Ansatz für Python 2.x:

In Python 2 .x, der Aufruf der .keys()-Methode für ein Wörterbuch gab eine Kopie der Schlüssel zurück. Daher könnten Sie den folgenden Ansatz verwenden:

<code class="python">for i in d.keys():</code>

Hinweis für Python 3.x:

In Python 3.x gibt die .keys()-Methode zurück ein Ansichtsobjekt anstelle einer Kopie. Folglich funktioniert der zweite Ansatz in Python 3.x nicht.

Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente während der Iteration sicher 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