私のアプリケーションで引数が呼び出し可能であるか、または型なしであるという特別な理由はありますか?私はこれがあなたの値としてdefaultdictを使ってdefaultdictをインスタンス化する方法であると確信しています。 defaultdict
コンストラクタに提供defaultdictの値を持つdefaultdictを構築する
dict = defaultdict(defaultdict(set))
私のアプリケーションで引数が呼び出し可能であるか、または型なしであるという特別な理由はありますか?私はこれがあなたの値としてdefaultdictを使ってdefaultdictをインスタンス化する方法であると確信しています。 defaultdict
コンストラクタに提供defaultdictの値を持つdefaultdictを構築する
dict = defaultdict(defaultdict(set))
引数は呼び出し可能なゼロ引数(docsを参照)でなければならないので、defaultdict(defaultdict)
は、作業を行いますが、defaultdict(defaultdict(set))
ません。あなたは少ししかし「カンニング」することができます
d = defaultdict(lambda: defaultdict(set))
あなたは順番に、呼び出されたときに、あなたが望む適切なデフォルト値を返すlambda
関数の形式で呼び出し可能なゼロ引数を提供する方法。
defaultdict
コンストラクタの機能を提供する必要がありますが、代わりにdefauldict(set)
はdefaultdict
オブジェクトです。あなたは、値defaultdicts
あなたがラムダを使用することができますdefaultdict
構築したい場合:
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