gpt4 book ai didi

python - 摆脱包含 None 值的嵌套字典中的键

转载 作者:行者123 更新时间:2023-11-28 21:38:30 25 4
gpt4 key购买 nike

我有以下命令:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com