我对为什么你需要一个lambda函数来嵌套defaultdict
感到有些困惑为什么你不能这样做?
test = defaultdict(defaultdict(list))
而不是
test = defaultdict(lambda:defaultdict(float))
答案 0 :(得分:7)
test = defaultdict(defaultdict(list))
因为defaultdict
要求您提供可以调用的内容来创建缺失值的键。 list
是可调用的,但defaultdict(list)
不是。它是defaultdict
个实例,您无法调用defaultdict
。
lambda
是一个函数,当被调用时,返回一个可以在字典中使用的值,因此它可以工作。
基本上,defaultdict(list)
将在实例化defaultdict
之前评估,并且您希望推迟,直到缺少密钥为止遇到。这就是这里使用可调用对象(类型或函数)的原因。