首页 > 解决方案 > Defaultdict 和 lambda 函数一起使用

问题描述

我试图理解一些代码,我发现了以下脚本:

defaultdict(lambda: defaultdict(lambda: 0))

我不熟悉 defaultdict 也不熟悉 lambda 函数。我怀疑这相当于初始化一个字典,其中的值也是一个字典。我是赖特吗?

标签: pythonlambdadefaultdict

解决方案


lambda表达式就地定义了一个函数。参数在 之前:,函数的结果在它之后。例如:

>>> inc = lambda x: x+1
>>> inc(3)
4
>>> add = lambda x, y: x + y
>>> add(19, 23)
42
>>> zero = lambda: 0
>>> zero()
0

defaultdict是一个dict在您使用不存在的密钥访问它时创建一个默认值。它通过调用你传递给它的函数来做到这一点。一个常见的用例是通过一个 defaultdict 来创建一个计数器,它会自动创建零值,然后可以递增:

>>> foo = defaultdict(lambda: 0)
>>> foo["bar"]
0
>>> foo["bar"] += 1
>>> foo["bar"]
1

由于 a 使用的函数defaultdict可以是任何东西,我们可以通过给外部 dict 一个返回内部的函数来嵌套它们defaultdict

>>> foo = defaultdict(lambda: defaultdict(lambda: 0))
>>> foo["bar"]["baz"]
0

推荐阅读