динамическая манипуляция с помощью клавиш словаря

Мне нужно манипулировать динамическим словарем на python. У меня есть нераспознанная информация из исходной информации, как в этом примере:

'properties[props][defaultValue]': '' 'properties[props][dt_precision]': '' 'properties[props][dt_table]': '' 'properties[props][dtfield]': '' 

Мне нужно преобразовать в словарь, как в этом примере:

 properties['props']['dt_table'] = 1 properties['props']['dt_table'] = 2 

Я не знаю реальной информации, но я знаю, что формат выглядит так:

 variable[index] = value variable[index][index_1] = value variable[index][index_1] [index_2]= value variable[index][index_1] [index_2][index_3]= value 

Моя проблема в том, как я могу добавить словарь с бесконечными слоями ключей? В других словах динамически добавьте большую иерархию подключей к подразделам.

В javascript я использую такие ссылки:

 f=var['key']; f['key'] = {}; f = f['key']; f['key'] = 120; 

Что позволяет мне построить:

 var['key']['key'] = 120 

но эквивалент в python не работает.

Наивный подход

Самый простой подход заключается в создании нового словаря на каждом под-уровне вручную:

 var = {} var['key'] = {} var['key']['key'] = 120 print(var['key']['key']) print(var) 

Что дает следующий результат:

 120 {'key': {'key': 120}} 

Autovivification

Вы можете автоматизировать его, используя defaultdict как предложено @martineau в комментариях:

 from collections import defaultdict def tree(): return defaultdict(tree) v2 = tree() v2['key']['key'] = 120 print(v2['key']['key']) print(v2) 

С выходом:

 120 defaultdict(<function tree at 0x1ae7d88>, {'key': defaultdict(<function tree at 0x1ae7d88>, {'key': 120})})