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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 05:47:28606parcourir

 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!

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