6、假设树的上下级之间是通过id和pid进行关联,pid为null代表是顶层节点,编写一个函数,将平铺结构的json数组转换成层级结构。(20分) 例:输入[ {"id" : 1, "pid": nul, "value":1}, {"id" : 1, "pid":2, "value":2},"id" :3,"pid": null, "value": 3}] 输出: ("d'"1,"pid": nll, "lue":1, cilenea'r'" :1, "ld".2, vaue".2, hrern("id" :3, "pid": nul, "alue": 3, cildre:[}
时间: 2023-07-02 08:22:36 浏览: 351
获取树的上下级SQL
以下是一个递归实现的示例代码:
```python
def build_tree(data, pid=None):
tree = []
for item in data:
if item['pid'] == pid:
children = build_tree(data, item['id'])
if children:
item['children'] = children
tree.append(item)
return tree
```
使用方法如下:
```python
data = [
{"id": 1, "pid": None, "value": 1},
{"id": 2, "pid": 1, "value": 2},
{"id": 3, "pid": 1, "value": 3},
{"id": 4, "pid": 2, "value": 4},
{"id": 5, "pid": 2, "value": 5},
{"id": 6, "pid": 3, "value": 6},
{"id": 7, "pid": 3, "value": 7},
]
tree = build_tree(data)
print(tree)
```
输出结果如下:
```python
[
{'id': 1, 'pid': None, 'value': 1, 'children': [
{'id': 2, 'pid': 1, 'value': 2, 'children': [
{'id': 4, 'pid': 2, 'value': 4},
{'id': 5, 'pid': 2, 'value': 5}
]},
{'id': 3, 'pid': 1, 'value': 3, 'children': [
{'id': 6, 'pid': 3, 'value': 6},
{'id': 7, 'pid': 3, 'value': 7}
]}
]}
]
```
其中,`build_tree` 函数的参数 `data` 是平铺结构的 JSON 数组,`pid` 初始值为 `None`,表示从顶层节点开始构建树。在函数中,我们遍历 `data` 数组,找到 `pid` 为当前节点的子节点,并递归调用 `build_tree` 函数来构建子树。如果当前节点有子节点,我们将它们存储在 `children` 属性中,最后返回当前层级的树结构。最外层的 `tree` 数组即为完整的树形结构。
阅读全文