J'ai créé ce main_dict
et je veux voir si main_dict[x]["Description"]
existe ou non, et si oui, le supprimer. Où x
est 'pins'
, 'nails'
, 'board'
, etc ...
main_dict = {
'pins':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'nails':
{
'Category': ['specific'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
},
'board':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'hammer':
{
'Category': ['tools'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
}
}
J'ai essayé ceci:
for x in main_dict:
del main_dict[x]["Description"]
Cela renvoie une erreur si main_dict[x]["Description"]
n'existe pas.
Cela ne fonctionne pas non plus:
if main_dict[x]["Description"] in mainDict[x]:
del main_dict[x]["Description"]
4 réponses
Cela le supprimerait de tous les sous-dictionnaires qui le contiennent:
main_dict = {
'pins':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'nails':
{
'Category': ['specific'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
},
'board':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'hammer':
{
'Category': ['tools'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
}
}
for key, value in main_dict.items():
if isinstance(value, dict) and 'Description' in value:
del value['Description']
Résultat:
{
'pins':
{
'Category': ['General'],
'Contact': ['Mark'],
},
'nails':
{
'Category': ['specific'],
'Contact': ['Jon'],
},
'board':
{
'Category': ['General'],
'Contact': ['Mark'],
},
'hammer':
{
'Category': ['tools'],
'Contact': ['Jon'],
}
}
Vous utilisez simplement la méthode pop()
avec l'argument par défaut (par exemple None
) pour omettre de vérifier si "Description"
existe comme clé.
for i in main_dict:
main_dict[i].pop("Description", None)
Remarque: ce n'est pas une bonne pratique de changer un objet itérable tout en itérant dessus.
Voici une solution simple:
for x in main_dict:
if "Description" in main_dict[x]:
main_dict[x].pop("Description")
Pour vérifier si une clé se trouve dans un dictionnaire, essayez if key in dict
pour archiver des dictionnaires imbriqués, vous suivez la même logique:
for key in main_dict:
if 'Description' in main_dict[key]:
# do something
Pour supprimer un élément, vous devez en effet utiliser le {{X0} } déclaration. J'ai copié votre main_dict, et j'ai exécuté la même chose que vous:
for x in main_dict:
del main_dict[x]['Description']
Peut-être que vous essayez de le supprimer deux fois?
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.