I have a large list like:
JavaScript
x
5
1
[A][B1][C1]=1
2
[A][B1][C2]=2
3
[A][B2]=3
4
[D][E][F][G]=4
5
I want to build a multi-level dict like:
JavaScript
1
10
10
1
A
2
--B1
3
-----C1=1
4
-----C2=1
5
--B2=3
6
D
7
--E
8
----F
9
------G=4
10
I know that if I use recursive defaultdict I can write table[A][B1][C1]=1
, table[A][B2]=2
, but this works only if I hardcode those insert statement.
While parsing the list, I don’t how many []’s I need beforehand to call table[key1][key2][...]
.
Advertisement
Answer
You can do it without even defining a class:
JavaScript
1
7
1
from collections import defaultdict
2
3
nested_dict = lambda: defaultdict(nested_dict)
4
nest = nested_dict()
5
6
nest[0][1][2][3][4][5] = 6
7