En s'appuyant sur les réponses de patriciasz y nneonneo et en tenant compte du fait que vous pourriez vouloir supprimer des clés qui n'ont que certaines choses fausses (par ex. ''
) mais pas d'autres (par exemple 0
), ou peut-être même que vous voulez inclure des éléments véridiques (par ex. 'SPAM'
), vous pouvez alors établir une liste de résultats très spécifique :
unwanted = ['', u'', None, False, [], 'SPAM']
Malheureusement, cela ne fonctionne pas tout à fait, car par exemple 0 in unwanted
évalue à True
. Nous devons faire la distinction entre 0
et d'autres choses peu fiables, nous devons donc utiliser is
:
any([0 is i for i in unwanted])
...évalue à False
.
Utilisez-le maintenant pour del
les choses non désirées :
unwanted_keys = [k for k, v in metadata.items() if any([v is i for i in unwanted])]
for k in unwanted_keys: del metadata[k]
Si vous voulez un nouveau dictionnaire, au lieu de modifier metadata
en place :
newdict = {k: v for k, v in metadata.items() if not any([v is i for i in unwanted])}