是否可以扩展所讨论的方法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/