Ho dovuto rimuovere alcuni campi da un dizionario, le chiavi di questi campi sono in un elenco. Così scrivo questa funzione:Modo elegante per rimuovere i campi dai dizionari nidificati
def delete_keys_from_dict(dict_del, lst_keys):
"""
Delete the keys present in the lst_keys from the dictionary.
Loops recursively over nested dictionaries.
"""
dict_foo = dict_del.copy()#Used as iterator to avoid the 'DictionaryHasChanged' error
for field in dict_foo.keys():
if field in lst_keys:
del dict_del[field]
if type(dict_foo[field]) == dict:
delete_keys_from_dict(dict_del[field], lst_keys)
return dict_del
questo codice funziona, ma non è molto elegante e sono sicuro che è possibile codificare una soluzione migliore.
hmmm Trovo elegante! –
Penso che non sia male il codice; hai il bit importante che ricorre su dizionari nidificati. Probabilmente dovresti controllare 'isinstance (spam, collections.MutableMapping)' per essere più polimorfico. – katrielalex