你为什么需要lambda来嵌套defaultdict?

Kev*_*vin 6 python lambda defaultdict

我有点困惑为什么你需要一个lambda函数来嵌套defaultdict

为什么你不能这样做?

test = defaultdict(defaultdict(list))
Run Code Online (Sandbox Code Playgroud)

代替

test = defaultdict(lambda:defaultdict(float))
Run Code Online (Sandbox Code Playgroud)

kin*_*all 7

test = defaultdict(defaultdict(list))
Run Code Online (Sandbox Code Playgroud)

因为defaultdict要求你给它一些可以调用的东西来创建缺失值的键.list是这样的可赎回,但defaultdict(list)不是.这是一个defaultdict实例,你不能打电话给defaultdict.

lambda是一个函数,当被调用时,返回一个可以在字典中使用的值,因此它可以工作.

从本质上讲,defaultdict(list)是要进行评估之前,defaultdict被实例化,并且要推迟直到缺少关键遇到.这就是这里使用可调用对象(类型或函数)的原因.

  • `list`的模拟当然是`lambda:list()`. (2认同)