首先我有必要记录下来这段代码,因为我遇到了这个问题, 然后没有解决
后来, 前段说我找到一段代码给我看看, 我并没有在意, 然后她实现了, 她实现了,她真的实现了, 我。。。
为了感谢她,我陪她玩了一中午的五子棋, 并假装输了几把
先说目的:
递归迭代
再看数据:
其实有个前提, 就是aid不能重复
fid是父级id, 指向的aid
如果 aid == fid , 证明fid的那个aid是子集
如果 fid == 0 就证明是顶级
代码:
def aaa(oldArr, fid): newArr = [] for i in oldArr: if i["fid"] == fid: obj = {"aid": i["aid"], "description": i["description"]} child = aaa(oldArr, i["aid"]) if len(child) > 0: obj["child"] = child newArr.append(obj) return newArr if __name__ == ‘__main__‘: li = [ {"aid": 5, "fid": 1, "description": "职业价值观4", "vid": 1, "variableName": "标准系数"}, {"aid": 1, "fid": 3, "description": "职业价值观1", "vid": 1}, {"aid": 4, "fid": 3, "description": "职业价值观2", "vid": 2}, {"aid": 7, "fid": 3, "description": "职业价值观3", "vid": 3}, {"aid": 2, "fid": 0, "description": "教育", "vid": 4}, {"aid": 3, "fid": 0, "description": "时间", "vid": 5}, ] res = {"dirname": "", "child_dirs": [], "files": []} print(aaa(li, 0))