【发布时间】:2019-01-10 20:58:34
【问题描述】:
我有以下代码:
from collections import *
nested_dict = lambda: defaultdict(nested_dict)
data = nested_dict()
这使我能够在字典中将任何新的“路径”写成一个衬里:
data['A']['B']['C']=3
这就是我想要的。 但是我想在运行时得到一个异常(对于任何不存在的路径):
var = data['A']['XXX']['C']
我觉得写作时需要 defaultdict,阅读时需要普通 dict...
或者,有没有一种简单的好方法来检查默认字典中是否存在“路径”而不修改其内容...
我尝试在查找之前将 defaultdict 转换回 dict,希望:
dict(data)['A']['XXX']['C']
会引发异常...但它不断创建缺少的键...
【问题讨论】:
-
dict(data)是一个浅副本。 -
所涉及的对象都没有任何方法可以区分您想要例外的
var = data['A']['XXX']['C']和不应抛出的data['A']['XXX']['C']['D'] = 4的第一步。