我有一个"parent"one_answers";child"ID号码,我试图创建一个嵌套的字典。我:
child_dict = {11: [12, 13], 12:[], 13:[14], 14:[], 15:[]}
,我想去
output = {11: [12, {13:14}], 15:[]}
递归地。最好的方法是什么?
为了使您的输出一致,我认为{13:14}
应该是{13:[14]}
。
def create_tree(d):
res = {}
exclude = set() # The keys which are not roots
def dfs(key):
if key not in res:
exclude.update(d[key])
res[key] = [
child if tree == [] else { child: tree }
for child, tree in map(dfs, d[key])
]
return key, res[key]
for key in d:
dfs(key)
# Only retain the root(s) at the toplevel:
for key in exclude:
res.pop(key)
return res
child_dict = {11: [12, 13], 12:[], 13:[14], 14:[], 15:[]}
res = create_tree(child_dict)
print(res)