defaultdict の defaultdict? 質問する

defaultdict の defaultdict? 質問する

defaultdict(defaultdict(int))次のコードを動作させるためにを使用する方法はありますか?

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

dx.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()

おすすめ記事