1. ホーム
  2. パイソン

[解決済み】defaultdictのdefaultdict?

2022-03-25 17:04:36

質問

を持たせる方法はありますか? defaultdict(defaultdict(int)) というのは、以下のコードを動作させるためでしょうか?

for x in stuff:
    d[x.a][x.b] += x.c_int

d に応じて、アドホックに構築する必要があります。 x.ax.b 要素を使用します。

使うことができた。

for x in stuff:
    d[x.a,x.b] += x.c_int

が、そうすると使えなくなる。

d.keys()
d[x.a].keys()

解決方法は?

はい、このようになります。

defaultdict(lambda: defaultdict(int))

の引数は defaultdict (この場合は lambda: defaultdict(int) ) は、存在しないキーにアクセスしようとしたときに呼び出されます。その戻り値は、このキーの新しい値として設定されます。つまり、この例では d[Key_doesnt_exist] は次のようになります。 defaultdict(int) .

この最後のdefaultdictからキーにアクセスしようとした場合、すなわち d[Key_doesnt_exist][Key_doesnt_exist] これは、最後の defaultdict の引数、すなわち int() .