Comment puis-je résoudre l'erreur « RuntimeError : la taille du dictionnaire a été modifiée pendant l'itération » lors de la suppression de clés basées sur des valeurs vides ?

Linda Hamilton
Libérer: 2024-11-03 10:21:29
original
523 Les gens l'ont consulté

How Can I Resolve the

Solution de contournement pour l'erreur « RuntimeError : le dictionnaire a changé de taille pendant l'itération »

Considérez un scénario dans lequel vous rencontrez une « RuntimeError : le dictionnaire a changé de taille pendant l'itération. itération" lors de la tentative de suppression de paires clé-valeur basées sur des valeurs vides d'un dictionnaire de listes. Le code ci-dessous illustre l'erreur :

<code class="python">d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}
for i in d:
    if not d[i]:
        d.pop(i)</code>
Copier après la connexion

L'erreur découle de la règle selon laquelle la modification d'un dictionnaire (ajout ou suppression d'entrées) lors d'une itération sur celui-ci entraîne un comportement inattendu. Pour contourner cette limitation et résoudre le problème avec succès, vous pouvez adopter les approches suivantes :

Utiliser une copie des clés

Python fournit une astuce intéressante pour contourner le limitation des itérations :

<code class="python">for i in list(d):</code>
Copier après la connexion

En créant une liste de clés, vous créez essentiellement une copie des clés du dictionnaire. Cela vous permet de parcourir la copie tout en apportant des modifications au dictionnaire lui-même.

Utilisation de la méthode .keys() (Python 2.x uniquement)

En Python 2 .x, la méthode .keys() fournissait une fonctionnalité similaire, créant efficacement une copie des clés :

<code class="python">for i in d.keys():</code>
Copier après la connexion

Cependant, il est important de noter que dans Python 3.x, .keys() renvoie un afficher l'objet et la solution de contournement ne s'appliquera pas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal