【发布时间】:2015-06-03 01:02:40
【问题描述】:
我有点困惑为什么你需要一个 lambda 函数来嵌套 defaultdict
你为什么不能这样呢?
test = defaultdict(defaultdict(list))
而不是
test = defaultdict(lambda:defaultdict(float))
【问题讨论】:
标签: python lambda defaultdict
我有点困惑为什么你需要一个 lambda 函数来嵌套 defaultdict
你为什么不能这样呢?
test = defaultdict(defaultdict(list))
而不是
test = defaultdict(lambda:defaultdict(float))
【问题讨论】:
标签: python lambda defaultdict
test = defaultdict(defaultdict(list))
因为defaultdict 要求你给它一些可以调用的东西来为缺失值创建键。 list 是这样一个可调用的,但 defaultdict(list) 不是。这是一个defaultdict 实例,你不能调用defaultdict。
lambda 是一个函数,当被调用时,返回一个可以在字典中使用的值,所以它可以工作。
基本上,defaultdict(list) 将在您的defaultdict 被实例化之前被评估,并且您希望推迟直到遇到丢失的键。这就是这里使用可调用对象(类型或函数)的原因。
【讨论】:
list 的类比当然是lambda: list()。