Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 构建值为defaultdict的defaultdict_Python_Dictionary - Fatal编程技术网

Python 构建值为defaultdict的defaultdict

Python 构建值为defaultdict的defaultdict,python,dictionary,Python,Dictionary,我的应用程序说参数必须是可调用的或无类型,有什么特别的原因吗?我很确定这就是用defaultdict作为其值实例化defaultdict的方式 dict = defaultdict(defaultdict(set)) 提供给defaultdict构造函数的参数必须是可调用的零参数(请参阅),因此defaultdict(defaultdict)可以工作,但defaultdict(defaultdict(set))不能工作。不过,你可以稍微“作弊”: d = defaultdict(lambda:

我的应用程序说参数必须是可调用的或无类型,有什么特别的原因吗?我很确定这就是用defaultdict作为其值实例化defaultdict的方式

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
其中默认可调用项丢失了。