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.
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>
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>
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>
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!