Forum Python

Please or S’enregistrer to create posts and topics.

Suppression d’un élément pendant une itération

Salut à tous,
Je cherche depuis longtemp à supprimer une clé spécifique d’un dictionnaire tout en itérant dessus. Voici mon code actuel :

data = {"a": 1, "b": 2, "c": 3}
for key in data:
if key == "b":
del data[key]
print(data)

Cependant, lorsque j’exécute ce code, j’obtiens l’erreur suivante :
RuntimeError: dictionary changed size during iteration
Comment puis-je contourner ce problème tout en atteignant mon objectif ? Merci !

Salut webdev,

Cette erreur se produit parce qu’on ne peut pas modifier la taille d’un dictionnaire en le parcourant. Pour résoudre ce problème, on peut utiliser une copie des clés avec list(data.keys()):

data = {"a": 1, "b": 2, "c": 3}
for key in list(data.keys()):
    if key == "b":
        del data[key]
print(data)
# Résultat : {"a": 1, "c": 3}