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

时间:2015-06-03 01:02:40

标签: python lambda defaultdict

我对为什么你需要一个lambda函数来嵌套defaultdict

感到有些困惑

为什么你不能这样做?

test = defaultdict(defaultdict(list))

而不是

test = defaultdict(lambda:defaultdict(float))

1 个答案:

答案 0 :(得分:7)

test = defaultdict(defaultdict(list))

因为defaultdict要求您提供可以调用的内容来创建缺失值的键。 list是可调用的,但defaultdict(list)不是。它是defaultdict个实例,您无法调用defaultdict

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

基本上,defaultdict(list)将在实例化defaultdict之前评估,并且您希望推迟,直到缺少密钥为止遇到。这就是这里使用可调用对象(类型或函数)的原因。