A имеет иерархическую структуру, отображаемую в базе данных MySQL (к которой я обращаюсь через Peewee).Я пытаюсь перебрать данные, чтобы собрать их во вложенные словари (для окончательного преобразования в XML).
Следующая функция передает мои данные до родительского узла и распечатывает данные, которые я хочу структурировать в моемdict:
def build_dict(current):
query = (ParamLevel
.select()
# If we are looking for parents, we are matching on child
.join(ParamLevelParamLevels, JOIN.LEFT_OUTER, on = (ParamLevelParamLevels.parent == ParamLevel.id))
.where(ParamLevelParamLevels.child == current)
)
# If we have a parent node, recurse further
if query.exists():
parent = query.get()
build_dict(parent)
print('Current ParamLevel "%s" parent: "%s"' % ( current.name, parent.name ))
else:
print('Found root node: %s' % current.name)
При этом он распечатывает это:
Found root node: polycomConfig
Current ParamLevel "device" parent: "polycomConfig"
Current ParamLevel "device.dhcp" parent: "device"
Current ParamLevel "device.dhcp.bootSrvOptType" parent: "device.dhcp"
Я ищу информацию о том, как сгенерировать следующую структуру данных:
{polycomConfig : { device : { device.dhcp : { device.dhcp.bootSrvOptType: {} } } } }
Я уверен, что это довольно просто, но я не могу реализовать рекурсивные функции.
Спасибо!