Maison  >  Article  >  développement back-end  >  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 ?

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
Linda Hamiltonoriginal
2024-11-03 10:21:29525parcourir

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>

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>

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>

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!

Déclaration:
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