La modification d'un Python dict lors de l'itération sur elle

Disons que nous avons un dictionnaire Python d, et nous sommes une itération sur elle comme:

for k,v in d.iteritems():
    del d[f(k)] # remove some item
    d[g(k)] = v # add a new item

(f et g sont juste quelques-noir-boîte de transformations.)

En d'autres termes, nous essayons d'ajouter/supprimer des éléments à d lors de l'itération sur l'aide de iteritems.

Est-ce bien défini? Pourriez-vous donner quelques références à l'appui de votre réponse?

(Il est assez évident de comment résoudre ce problème si c'est cassé, donc ce n'est pas l'angle que je suis après.)

  • double possible de python - pourquoi n'est-il pas sûr de modifier la séquence de itérée sur?
  • Voir stackoverflow.com/questions/5384914/...
  • J'ai essayé de le faire et il semble que si vous laissez initiale dict taille inchangée - par exemple, de remplacer tout de clé/valeur au lieu de les enlever ensuite ce code ne sera pas jeter l'exception
  • Je suis en désaccord que c'est “assez évident comment résoudre ce problème si c'est cassé” pour tout le monde à la recherche de ce thème (dont moi-même), et je souhaite que l'on a accepté la réponse a au moins touché.
InformationsquelleAutor NPE | 2011-07-21