J'ai les données suivantes d'un dictionnaire au format python
.
Le problème auquel je suis confronté est la chaîne vide comme clé et valeur dans le dictionnaire.
data = {'id': '213', 'first_name': 'john', 'last_name': 'doe', '': ''}
mon objectif est de supprimer la chaîne vide key
et de créer un nouveau dictionnaire sans elle
alors j'ai essayé :
from copy import deepcopy
for x, y in data.items():
if x == "":
del data[x]
new_data = deepcopy(data)
print(new_data)
mais pour une raison quelconque, j'obtiens l'erreur suivante
...
for x, y in data.items():
RuntimeError: dictionary changed size during iteration
est-ce que je rate quelque chose ?
Étant donné que vous créez déjà une copie en profondeur, il peut être avantageux de simplement itérer sur les clés et de supprimer les clés inutiles avec une condition if.
Essaye ça -
new_dict = {k:v for k,v in data.items() if k!=''}
print(new_dict)
{'id': '213', 'first_name': 'john', 'last_name': 'doe'}
Comme la trace d'erreur le mentionne assez clairement, la raison de l'erreur dans le code suivant est que vous modifiez le dictionnaire pendant l'itération.
for x, y in data.items():
if x == "":
del data[x] #<----
Au lieu de cela, comme mentionné par d'autres excellentes réponses (@tituszban), vous devez simplement utiliser del data['']
directement.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots