defaultdict的含义(lambda:defaultdict(dict))

Nem*_*emo 0 python defaultdict

Python中以下行的含义是什么?

x = defaultdict(lambda: defaultdict(dict))
Run Code Online (Sandbox Code Playgroud)

Yan*_*ier 5

让我们从内到外解决它.首先dict是字典类型.与其他类型一样,调用它会创建该类型的实例(也称为对象).A defaultdict是一个采用可调用参数的类型:在调用时会产生一个要放入字典中的项目.当访问不存在的条目而不是KeyError像普通的那样生成时,会发生这种情况dict.第三,lambda是一种基于单个表达式创建未命名函数的方法,因此这两个类似(第二个包含一个知道自己名称的函数,第一个不是):

y = lambda: defaultdict(dict)

def y():
    return defaultdict(dict)
Run Code Online (Sandbox Code Playgroud)

最后,整件事情被另一件事包裹起来defaultdict.所以结果是x一个defaultdict产生defaultdict产生小号dict实例.在第三级,不再有默认值.