Python 构建值为defaultdict的defaultdict
我的应用程序说参数必须是可调用的或无类型,有什么特别的原因吗?我很确定这就是用defaultdict作为其值实例化defaultdict的方式Python 构建值为defaultdict的defaultdict,python,dictionary,Python,Dictionary,我的应用程序说参数必须是可调用的或无类型,有什么特别的原因吗?我很确定这就是用defaultdict作为其值实例化defaultdict的方式 dict = defaultdict(defaultdict(set)) 提供给defaultdict构造函数的参数必须是可调用的零参数(请参阅),因此defaultdict(defaultdict)可以工作,但defaultdict(defaultdict(set))不能工作。不过,你可以稍微“作弊”: d = defaultdict(lambda:
dict = defaultdict(defaultdict(set))
提供给
defaultdict
构造函数的参数必须是可调用的零参数(请参阅),因此defaultdict(defaultdict)
可以工作,但defaultdict(defaultdict(set))
不能工作。不过,你可以稍微“作弊”:
d = defaultdict(lambda: defaultdict(set))
这样,您就可以以
lambda
函数的形式提供一个可调用的零参数,当调用该函数时,该函数将返回所需的适当默认值。您需要为defaultdict
构造函数提供一个函数,但defauldict(set)
是defaultdict
对象。如果要构建值为defaultdicts
的defaultdicts
,可以使用lambdas:
from collections import defaultdict
dd = lambda: defaultdict(dd)
x = dd()
x['foo']['bar']['foobar'] = 1
谢谢,这很有道理。如果我做对了,default(set)返回一个对象,如上所述,而不是一个类型;因此,外部defaultdict的实例化会抛出一个错误,因为它会接收一个对象。从技术上讲,我不能这样做吗:defaultdict(type)(defaultdict(set))不要紧;这也会产生问题,因为它没有实例化内部字典,而只是给出一个类型。这是一个聪明的想法,但我认为它不起作用。
type(defaultdict(set))
是defaultdict
其中默认可调用项丢失了。