defaultdict(defaultdict(int))
次のコードを動作させるためにを使用する方法はありますか?
for x in stuff:
d[x.a][x.b] += x.c_int
d
x.a
および要素に応じてアドホックに構築する必要がありますx.b
。
以下を使用できます:
for x in stuff:
d[x.a,x.b] += x.c_int
しかし、そうすると次のものが使用できなくなります:
d.keys()
d[x.a].keys()
ベストアンサー1
はい、こんな感じです:
defaultdict(lambda: defaultdict(int))
存在しないキーにアクセスしようとすると、の引数defaultdict
(この場合は) が呼び出されます。その戻り値は、このキーの新しい値として設定されます。つまり、この場合は の値は になります。lambda: defaultdict(int)
d[Key_doesnt_exist]
defaultdict(int)
この最後の defaultdict ie からキーにアクセスしようとすると、d[Key_doesnt_exist][Key_doesnt_exist]
最後の defaultdict ie の引数の戻り値である 0 が返されますint()
。