python - 从 dict 构造一个嵌套的 defaultdict?

标签 python dictionary

是否可以扩展所讨论的方法here嵌套默认字典?

编辑:

根据评论,默认值从原来的 None 更新为 lambda: None。但是,以下内容仍然无法按预期工作:

from collections import defaultdict
dd = defaultdict(lambda: None, {"a":1,"b":{"c":3}})

dd["b"]["e"] 引发 KeyError 而不是返回 None。

如何将所有嵌套字典转换为默认字典?

最佳答案

你可以这样做:

from collections import defaultdict


def to_none(d, factory):
    result = defaultdict(factory)
    for key, value in d.items():
        if isinstance(value, dict):
            result[key] = to_none(value, factory)
        else:
            result[key] = value
    return result


d = {"a": 1, "b": {"c": 3}}

dd = to_none(d, lambda: None)

print(dd['a'])
print(dd['xxx'])
print(dd['b']['c'])
print(dd['b']['e'])

输出

1
None
3
None

关于python - 从 dict 构造一个嵌套的 defaultdict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961347/

相关文章:

python - python 中的系数图

python - 为字典中列表值的每个组合创建一个字典

swift - 如何在函数中使用公式词典中的公式

java - 将对象属性映射到 Java 映射的最简单方法

python - 我如何使用 Python 列表执行此操作? (元素收集器?)

python - AttributeError:类型对象 'Project' 没有属性 '_meta'

python - 当我有小数和大数时,我应该如何处理小数精度?

python - 在Python中,如果没有结果,返回什么,False还是None?

python - 断管错误 selenium webdriver,当命令之间存在间隙时?

ios - 如何快速创建和添加值到字典