Wie kann ich den Fehler „RuntimeError: Größe des Wörterbuchs während der Iteration geändert' beim Entfernen von Schlüsseln basierend auf leeren Werten beheben?

Linda Hamilton
Freigeben: 2024-11-03 10:21:29
Original
523 Leute haben es durchsucht

How Can I Resolve the

Problemumgehung für den Fehler „RuntimeError: Wörterbuch hat Größe während der Iteration geändert“

Stellen Sie sich ein Szenario vor, in dem Sie auf einen „RuntimeError: Wörterbuch hat Größe während der Iteration geändert“ stoßen Iteration", wenn versucht wird, Schlüssel-Wert-Paare basierend auf leeren Werten aus einem Listenwörterbuch zu entfernen. Der folgende Code veranschaulicht den Fehler:

<code class="python">d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}
for i in d:
    if not d[i]:
        d.pop(i)</code>
Nach dem Login kopieren

Der Fehler ergibt sich aus der Regel, dass das Ändern eines Wörterbuchs (Hinzufügen oder Entfernen von Einträgen) während der Iteration zu unerwartetem Verhalten führt. Um diese Einschränkung zu umgehen und das Problem erfolgreich zu lösen, können Sie die folgenden Ansätze anwenden:

Verwenden einer Kopie der Schlüssel

Python bietet einen netten Trick, um das Problem zu umgehen Iterationsbeschränkung:

<code class="python">for i in list(d):</code>
Nach dem Login kopieren

Durch das Erstellen einer Liste der Schlüssel erstellen Sie im Wesentlichen eine Kopie der Wörterbuchschlüssel. Dadurch können Sie die Kopie durchlaufen und gleichzeitig Änderungen am Wörterbuch selbst vornehmen.

Verwendung der .keys()-Methode (nur Python 2.x)

In Python 2 .x bot die .keys()-Methode eine ähnliche Funktionalität und erstellte effektiv eine Kopie der Schlüssel:

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

Es ist jedoch wichtig zu beachten, dass .keys() in Python 3.x einen zurückgibt Objekt anzeigen, und die Problemumgehung wird nicht angewendet.

Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „RuntimeError: Größe des Wörterbuchs während der Iteration geändert' beim Entfernen von Schlüsseln basierend auf leeren Werten beheben?. 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