带有上下级关系的列表,转树状json,可用于绘制树状图,发现数据之间的关系。
一、思路
(一)使用递归的方式,
输出为一个列表,列表中是一个json
(二)先找到根结点
根结点,即上级为空,或定一个记录的上级开始点。
(三)对每个分支进行递归
二、注意
每次递归是对所有的列表项进行循环,不能只循环一个。
三、代码
(一)代码
def tree_dict(source,parent):
# 输出列表名
tree = []
# 对每项进行循环
for item in source:
# 判断上级
if item['parent_foreign'] == parent:
# 加上子项
tree.append(item)
# 递归
item['children']=tree_dict(source,item['id'])
return tree
if __name__ == "__main__":
source = [
{'id':1,'parent_foreign':None},
{'id':2,'parent_foreign':1},
{'id':3,'parent_foreign':4},
{'id':4,'parent_foreign':1},
]
tree = tree_dict(source,None)
print(json.dumps(tree))
(二)结果
[{"id": 1, "parent_foreign": null, "children": [{"id": 2, "parent_foreign": 1, "children": []}, {"id": 4, "parent_foreign": 1, "children": [{"id": 3, "parent_foreign": 4, "children": []}]}]}]