基于父id将字典列表转换为字典树

2024-09-27 21:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想这样做一个字典列表,每个有父id的元素都应该是父元素的子元素。在

假设我们有一个python列表,其中包含多个字典。在

[{
    "id": 1,
    "title": "node1",
    "parent": null
},
{
    "id": 2,
    "title": "node2",
    "parent": 1
},
{
    "id": 3,
    "title": "node3",
    "parent": 1
},
{
    "id": 4,
    "title": "node4",
    "parent": 2
},
{
    "id": 5,
    "title": "node5",
    "parent": 2
}]

我想把这个列表转换成基于父键的树。就像

^{pr2}$

Tags: id元素列表字典titlenullparentnode1
2条回答
data = [{
  "id": 1,
  "title": "node1",
  "parent": "null"
  },
  { "id": 2,
    "title": "node2",
    "parent": "null"
  },
{
    "id": 2,
    "title": "node2",
    "parent": 1
},
{
    "id": 3,
    "title": "node3",
    "parent": 1
},
{
    "id": 4,
    "title": "node4",
    "parent": 2
},
{
    "id": 5,
    "title": "node5",
    "parent": 2
}]
parent_data=[]
for keys in data:
  if keys['parent'] == "null":
     keys['childs']=[]
     parent_data.append(keys)

for keys in data:
  for key in parent_data:
     if key['id'] == keys['parent']:
         key['childs'].append(keys)



print parent_data
k = [{
    "id": 1,
    "title": "node1",
    "parent": "null"
},
{
    "id": 2,
    "title": "node2",
    "parent": 1
},
{
    "id": 3,
    "title": "node3",
    "parent": 1
},
{
    "id": 4,
    "title": "node4",
    "parent": 2
},
{
    "id": 5,
    "title": "node5",
    "parent": 2
}]

result, t = [], {}

for i in k:
    i['childs'] = []
    if i['parent'] == 'null':
        del i['parent']
        result.append(i)
        t[1] = result[0]
    else:
        t[i['parent']]['childs'].append(i)
        t[i['id']] = t[i['parent']]['childs'][-1]
        del t[i['parent']]['childs'][-1]['parent']

print result 

相关问题 更多 >

    热门问题