我有一些数据,大致如下:
[
{"tag": "A", "level":0},
{"tag": "B", "level":1},
{"tag": "D", "level":2},
{"tag": "F", "level":3},
{"tag": "G", "level":4},
{"tag": "E", "level":2},
{"tag": "H", "level":3},
{"tag": "I", "level":3},
{"tag": "C", "level":1},
{"tag": "J", "level":2},
]
我想将其转换为基于深度级别(键“级别”)的多级dict:
{
"A": {"level": 0, "children": {
"B": {"level": 1, "children": {
"D": {"level": 2, "children": {
"F": {"level": 3, "children": {
"G": {"level": 4, "children": {}}}}}},
"E": {"level": 2, "children": {
"H": {"level": 3, "children": {}},
"I": {"level": 3, "children": {}}}}}},
"C": {"level": 1, "children": {
"J": {"level": 2, "children": {}}}}}}
}
我现在能想到的就是这段代码。。。几项后明显断裂:
def list2multilevel(list):
children = {}
parent = list.pop(0)
tag = parent.get("Tag")
level = parent.get("Level")
for child in list:
ctag = child.get("Tag")
clevel = child.get("Level")
if clevel == level + 1:
children.update(list2multilevel(list))
elif clevel <= level:
print(clevel, level)
break
return {tag: children}
本来是周五坐下来做的,本来只是一个小练习
输出:
限制:
level >= 0
level
都不能大于之前出现的最大级别的+1
李>说明:
parents
是一个字典,用于记住每个级别的最后一个元素李>root
是一个起点(伪元素)李>-1
级别开始,该级别指示root
李>children
李>parents
字典李>root['children']
李>使用递归的其他解决方案(与Bosong Choi的答案相同的限制):
您可以使用递归:
输出:
相关问题 更多 >
编程相关推荐