Modification itérative du dictionnaire
Il est courant de devoir supprimer des éléments d'un dictionnaire tout en le parcourant simultanément. Cependant, cette opération n'est pas supportée nativement en Python.
Modifier un dictionnaire en itérant dessus peut entraîner des erreurs. Par exemple, l'extrait de code que vous avez fourni peut échouer dans Python 3 avec l'erreur :
RuntimeError: dictionary changed size during iteration.
Solution Python 3
Dans Python 3, la solution consiste à créer une liste de clés du dictionnaire et parcourez cette liste à la place. Voici un exemple :
<code class="python"># Python 3 or higher for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
Cette approche fonctionne car une liste est immuable et ne sera pas affectée par les modifications apportées au dictionnaire.
Solution Python 2
En Python 2, la méthode keys() renvoie un itérateur, qui ne peut pas être modifié lors de l'itération. Pour modifier le dictionnaire, vous pouvez utiliser l'approche suivante :
<code class="python"># Python 2 for k, v in mydict.items(): if v == 3: del mydict[k]</code>
Dans Python 2, vous pouvez également convertir l'itérateur en liste :
<code class="python">for k in mydict.keys(): if mydict[k] == 3: del mydict[k]</code>
Approche alternative
Vous pouvez également utiliser la méthode pop() pour supprimer des éléments du dictionnaire lors d'une itération :
<code class="python">for k in list(mydict.keys()): if k == 3: mydict.pop(k)</code>
Notez que cette approche est plus efficace car elle ne crée pas de liste supplémentaire.
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!