ฉันมีข้อมูลบางอย่างมากหรือน้อยเช่นนี้
[
{"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}
แต่เดิมนั่งลงบนมันในวันศุกร์และมันควรจะเป็นเพียงการออกกำลังกายเล็ก ๆ น้อย ๆ ....