Comment puis-je supprimer en toute sécurité des éléments d'un dictionnaire lors d'une itération en Python ?

Barbara Streisand
Libérer: 2024-11-02 19:22:30
original
789 Les gens l'ont consulté

How Can I Safely Delete Items From a Dictionary While Iterating in Python?

Suppression d'éléments d'un dictionnaire pendant une itération

Il est souvent nécessaire de modifier le contenu d'un dictionnaire lors d'une itération. Cependant, la suppression d'éléments directement pendant l'itération peut entraîner des erreurs ou des résultats incohérents.

Itérer avec del (Python 2)

Dans Python 2, supprimer des éléments avec del pendant l'itération peut entraîner des problèmes car l'itérateur s'attend à ce que la taille du dictionnaire reste constante. Ce comportement entraîne une RuntimeError. Il est recommandé d'utiliser les méthodes key ou items :

<code class="python">for k in mydict.keys():
    if k == val:
        del mydict[k]

# or

for k, v in mydict.items():
    if v == val:
        del mydict[k]</code>
Copier après la connexion

Itérer avec del (Python 3 )

Dans Python 3 , mydict.keys() renvoie un itérateur, pas une liste. La modification du dictionnaire pendant l'itération provoquera une RuntimeError. Pour éviter cela, convertissez l'itérateur en liste avant d'utiliser del:

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

Utilisation de pop()

Une autre option consiste à utiliser la méthode pop() pour supprimer des éléments :

<code class="python">while mydict:
    k, v = mydict.popitem()
    if v == 3:
        mydict[k] = v

# or

for k in mydict.copy():
    if mydict[k] == 3:
        mydict.pop(k)</code>
Copier après la connexion

Recommandations

Pour Python 3, il est recommandé d'utiliser les méthodes key ou items avec une conversion de liste pour éviter les erreurs d'exécution. Pour Python 2, les méthodes key ou items doivent être utilisées directement pour modifier le dictionnaire en toute sécurité.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!