Я пытаюсь создать вложенный json, используя циклы for. Значения Json являются динамическими, а длина дочерних элементов может варьироваться без фиксированной длины. Также структура должна быть
BuildingGroup
Building1
Ward
Room
Bed
Ward
Ward
Room
Bed
Bed
BuildingGroupвсегда является корневым узлом, но дети могут различаться. Мне нужно динамически добавлять детей с помощью параметров.Это то, что у меня есть.
import collections
def add_element(root, path, data):
if len(path) == 1:
root[path[0]] = data
else:
add_element(root[path[0]], path[1:], data)
def create_tree(Wards,WardName,Rooms):
count = 1
ward_list=[]
room_list= []
tree = lambda: collections.defaultdict(tree)
root = tree()
path_list= ['BuildingGroup', 'Building1']
for i in range(1,Wards):
Ward = 'Ward' + str(count)
path_list,append(Ward)
ward_list.append(Ward)
print (ward_list)
print (path_list)
count += 1
add_element(root,path_list, 1 )
path_list.append(WardName)
for i in range(1, Rooms):
Room = 'Room' + str(count)
path_list.append(Room)
room_list.append(Room)
print (root)
add_element(root,path_list, 1 )
create_tree(1, 'Ward1', 10)
Create_tree () должен создать одну палату с именем 'Ward1'
и добавить 10 Rooms
к Ward1
Ouput.
{'BuildingGroup': defaultdict(<function create_tree.<locals>.<lambda> at 0x000002054A7AE510>, {'Building1': defaultdict(<function create_tree.<locals>.<lambda> at 0x000002054A7AE510>, {'Ward1': defaultdict(<function create_tree.<locals>.<lambda> at 0x000002054A7AE510>, {'Room1': 1})})})})
Первая итерация работает, но после первой итерации я получаю эту ошибку.
TypeError: 'int' object does not support item assignment