Maison > développement back-end > Tutoriel Python > Comment supprimer en toute sécurité des éléments d'un dictionnaire pendant une itération en Python ?

Comment supprimer en toute sécurité des éléments d'un dictionnaire pendant une itération en Python ?

Patricia Arquette
Libérer: 2024-10-30 19:12:30
original
970 Les gens l'ont consulté

How to Safely Delete Items from a Dictionary During Iteration in Python?

Suppression d'éléments d'un dictionnaire lors d'une itération en Python

Lorsque vous travaillez avec des dictionnaires en Python, il peut y avoir des cas où vous devez supprimer des éléments qui remplissent des critères spécifiques lors de l’itération. Bien qu'intuitivement, il puisse sembler qu'une itération directe sur le dictionnaire et la suppression des éléments rencontrés suffiraient, cette approche est problématique.

Défis liés à la suppression directe pendant l'itération

Dans Python 3, la suppression directe d'éléments d'un dictionnaire lors d'une itération dessus génère une RuntimeError. En effet, la modification de la taille du dictionnaire pendant l'itération entraîne un dysfonctionnement de l'itérateur.

Dans Python 2, cette approche de suppression directe entraîne une erreur si l'élément à supprimer est l'élément suivant dans la séquence d'itération.

Solutions

Pour supprimer en toute sécurité des éléments d'un dictionnaire lors d'une itération, voici les solutions recommandées :

Python 3 :

Convertissez les clés du dictionnaire en liste en utilisant list(mydict.keys()) avant l'itération. Cela vous permet de parcourir la liste tout en apportant des modifications au dictionnaire :

<code class="python">for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]</code>
Copier après la connexion

Python 2 :

Utilisez les méthodes key() ou items() pour créez respectivement une liste de clés ou de tuples de paires clé-valeur. Vous pouvez ensuite parcourir ces listes en toute sécurité pour supprimer des éléments sans perturber l'itérateur :

<code class="python">for k in mydict.keys():
    if k == 'two':
        del mydict[k]</code>
Copier après la connexion
<code class="python">for k, v in mydict.items():
    if v == 3:
        del mydict[k]</code>
Copier après la connexion

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