Suppression d’un élément pendant une itération
Citation de webdev le 7 décembre 2024, 16 h 53 minSalut à 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 à 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 !
Citation de PythonTech le 7 décembre 2024, 17 h 55 minSalut 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}
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}