【发布时间】:2019-10-05 07:07:24
【问题描述】:
一个在 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: {} } } } }
我确信这相当简单,但我对实现递归函数感到生疏。
谢谢!
【问题讨论】:
标签: python python-3.x dictionary recursion peewee