1. ホーム
  2. python

深さを変えられる多階層のdefaultdict?

2023-08-21 17:20:41

質問

私は、次のような大きなリストを持っています。

[A][B1][C1]=1
[A][B1][C2]=2
[A][B2]=3
[D][E][F][G]=4

のような多段ディクトを作りたい。

A
--B1
-----C1=1
-----C2=1
--B2=3
D
--E
----F
------G=4

再帰的なdefaultdictを使えば、以下のように書けることは知っています。 table[A][B1][C1]=1 , table[A][B2]=2 というように、挿入文をハードコードした場合のみ動作します。

リストをパースしている間、私は事前にいくつの[]が必要なのかわかりません。 table[key1][key2][...] .

どのように解決するのですか?

クラスも定義せずにできます。

from collections import defaultdict

nested_dict = lambda: defaultdict(nested_dict)
nest = nested_dict()

nest[0][1][2][3][4][5] = 6