是否有任何特別的原因,我的應用程序說參數必須是可調用的或者沒有類型?我很肯定這是你如何實例化defaultdict作爲其值的defaultdict。構建一個defaultdict,其值爲defaultdict
dict = defaultdict(defaultdict(set))
是否有任何特別的原因,我的應用程序說參數必須是可調用的或者沒有類型?我很肯定這是你如何實例化defaultdict作爲其值的defaultdict。構建一個defaultdict,其值爲defaultdict
dict = defaultdict(defaultdict(set))
提供給defaultdict
構造函數的參數必須是一個零參數調用(見docs),所以defaultdict(defaultdict)
的工作,但defaultdict(defaultdict(set))
沒有。你可以「騙」雖然有點:
d = defaultdict(lambda: defaultdict(set))
您提供一個零參數的lambda
功能這反過來,調用時,返回你要適當的默認值的形式調用的方式。
您需要爲defaultdict
構造函數提供一個函數,而defauldict(set)
則爲defaultdict
對象。如果你想建立一個defaultdict
其值defaultdicts
你可以使用lambda表達式:
from collections import defaultdict
dd = lambda: defaultdict(dd)
x = dd()
x['foo']['bar']['foobar'] = 1
謝謝,這使得有很大的意義。如果我有這個權利,默認(set)返回一個對象,如上所述,而不是一個類型;因此,外部defaultdict的實例化會引發錯誤,因爲它接收對象。我不能這樣做,技術上,然後: defaultdict(type(defaultdict(set)) –
沒關係;這也產生了問題,因爲它沒有實例化內部字典,而只是給一個類型 –
這'一個聰明的主意,但我認爲它不起作用,'type(defaultdict(set))'是'defaultdict',其中缺省的可調用會丟失。 – schwobaseggl