我有以下命令:
dict_2 = {
'key1': {'subkey1': 2, 'subkey2': 7, 'subkey3': 5},
'key2': {'subkey1': None, 'subkey2': None, 'subkey3': None},
}
我期待从 subkeys
中的那些 None
值中清除 dict_2
,方法是删除整个键及其嵌套字典:
简而言之,我的输出应该是:
dict_2={key1:{subkey1:2,subkey2:7,subkey3:5}}
我试过的是:
glob_dict={}
for k,v in dict_2.items():
dictionary={k: dict_2[k] for k in dict_2 if not None (dict_2[k]
['subkey2'])}
if bool(glob_dict)==False:
glob_dict=dictionary
else:
glob_dict={**glob_dict,**dictionary}
print(glob_dict)
我当前的输出是:
TypeError: 'NoneType' object is not callable
我不太确定循环是否是摆脱嵌套循环的 None
值的最佳方式,我也不确定如何表达我想摆脱None
值。
最佳答案
删除所有 None
和后续空字典的递归解决方案如下所示:
代码:
def remove_empties_from_dict(a_dict):
new_dict = {}
for k, v in a_dict.items():
if isinstance(v, dict):
v = remove_empties_from_dict(v)
if v is not None:
new_dict[k] = v
return new_dict or None
测试代码:
dict_2 = {
'key1': {'subkey1': 2, 'subkey2': 7, 'subkey3': 5},
'key2': {'subkey1': None, 'subkey2': None, 'subkey3': None},
}
print(remove_empties_from_dict(dict_2))
结果:
{'key1': {'subkey1': 2, 'subkey2': 7, 'subkey3': 5}}
关于python - 摆脱包含 None 值的嵌套字典中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48151953/