- 32
- 0
1.原始数据:
数据结构为一个二维表list存的树:
[json1,json2...]
json的格式为:
{id,name,...deptPreId(树节点)}
原始数据例子:
[{"id":1,"deptName":"B","deptFullname":"A_B","deptLevel":2,"deptPreId":2,},
{"id":2,"deptName":"A","deptFullname":null,"deptLevel":1,"deptPreId":null,},
{"id":3,"deptName":"C","deptFullname":null,"deptLevel":3,"deptPreId":1,},
{"id":4,"deptName":"wwxxX","deptFullname":null,"deptLevel":null,"deptPreId":1},
{"id":5,"deptName":"123124124","deptFullname":null,"deptLevel"2,"deptPreId":1}
];
2.目标数据:
将其转换为下面目标数据,也是一个类似的树,有树形层次:
其中如果指定child的list的话如何找到其父和组,并生成相应的树。
数据格式如下:
list:[json1,json2]
json:{json,childList}
Childlist:[json1,json2]
目标数据例子:
data=[
{"id":2,"deptName":"A","deptFullname":null,"deptLevel":1,"deptPreId":null
,
Child:
[
{"id":1,"deptName":"B","deptFullname":"A_B","deptLevel":2,"deptPreId":2,
Child:
[
{"id":3,"deptName":"C","deptFullname":null,"deptLevel":3,"deptPreId":1,}
]
},
{"id":5,"deptName":"123124124","deptFullname":null,"deptLevel"2,"deptPreId":1}
]
}]
通过子类去寻找父类会涉及到父类合并的问题,
比如树形结构:A1->B1->C1,A1->B1->C2,A1->B1->C2->D2,比如我现在要通过list,[D2,C1]去寻找D2,所有的祖辈,当回溯到B1的时候要进行合并,但是C2和D2第几次循环查到C2,D2是不确定的。所以和参考代码给出的解决方法有所区分
类似问题:通过父类去寻找子类:https://segmentfault.com/q/10...
- 共 0 条
- 全部回答
-
一个人一辈子 普通会员 1楼
假设我们有一个类列表,其中包含子类和父类的关系,它们是以json格式存储的,如下所示:
json [ {"name": "A", "parent": null}, {"name": "B", "parent": "A"}, {"name": "C", "parent": "B"}, {"name": "D", "parent": "A"}, {"name": "E", "parent": "C"}, {"name": "F", "parent": "D"} ]现在我们想要将这个列表转换为以子类为根节点,向上查找所有父类的树形结构。例如,如果我们指定子类"E",则结果应为:
json { "name": "E", "children": [ { "name": "C", "children": [ { "name": "B", "children": [ { "name": "A", "children": [] } ] } ] } ] }以下是一个Python示例来实现这个转换:
```python import json
class_tree = [ {"name": "A", "parent": None}, {"name": "B", "parent": "A"}, {"name": "C", "parent": "B"}, {"name": "D", "parent": "A"}, {"name": "E", "parent": "C"}, {"name": "F", "parent": "D"} ]
def build_class_hierarchy(cls_name, class_tree): node = next((item for item in class_tree if item["name"] == cls_name), None) if not node: return None
hierarchy = {"name": node["name"], "children": []} parent_name = node["parent"] while parent_name is not None: parent = next((item for item in class_tree if item["name"] == parent_name), None) if parent: hierarchy["children"].append({"name": parent["name"], "children": []}) parent_name = parent["parent"] else: break return hierarchy指定子类"E"
target_cls = "E" result = build_class_hierarchy(target_cls, class_tree)
print(json.dumps(result, indent=2)) ```
注意:这个例子中没有对循环引用或者层级过深的情况做处理,实际使用时可能需要根据实际情况进行调整。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

