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

标签 python dictionary nested

我有以下命令:

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/

相关文章:

c++ - 2D游戏 map 移动

java - 如何将文件中的输入放入树形图中

list - Kotlin 声明嵌套数组

java - Spark 中的嵌套并行化?正确的做法是什么?

python - 什么时候在 Python 正则表达式中使用 re.search 而不是 re.findall 才有意义?

python - 类型错误:使用 %s 时格式字符串的参数不足

Python,遍历 Excel 电子表格

python - 在 PyQT4 中上下移动行

python - 从字典中键的值列表中删除重复项?

javascript - 在 javascript 中访问可能嵌套的属性?