Pouvez-vous modifier en toute sécurité un dictionnaire lors d'une itération avec `iteritems()` en Python ?

Patricia Arquette
Libérer: 2024-10-30 05:47:28
original
618 Les gens l'ont consulté

 Can You Safely Modify a Dictionary While Iterating with `iteritems()` in Python?

Les dictionnaires itérés peuvent-ils modifier en toute sécurité les éléments sous-jacents ?

Lors de la navigation dans un dictionnaire Python à l'aide d'iteritems(), les modifications apportées au dictionnaire peuvent entraîner des erreurs inattendues. résultats. La suppression d'éléments (par exemple, del d[f(k)]) peut déclencher une « RuntimeError : le dictionnaire a changé de taille pendant l'itération. »

Documentation officielle :

Selon la documentation Python, il ne faut pas modifier le dictionnaire pendant l'itération. La méthode iteritems() parcourt la copie des clés et des valeurs du dictionnaire, mais pas le dictionnaire sous-jacent lui-même. Par conséquent, les modifications directes apportées au dictionnaire (telles que la suppression ou l'ajout d'éléments) ne seront pas reflétées dans l'itérateur.

Pratiques de sécurité :

Pour éviter ce problème, la documentation suggère d'utiliser d.copy().items() pour créer une copie indépendante du dictionnaire avant de procéder à une itération. Alternativement, on peut parcourir une liste de clés et utiliser del d[key] ou d[key] = newValue dans la boucle.

Modification partielle :

While l'ajout d'éléments à de nouvelles clés peut provoquer des problèmes, la modification des valeurs existantes est généralement sûre. Cependant, notez que modifier la valeur d'une clé existante peut modifier sa valeur de hachage, affectant potentiellement sa position dans le dictionnaire.

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!