# 定义一个list
list=['a1', 'a1','a3', 'a4']
# 希望到的以下的格式:
data=[{
"name": "a1",
"childrens": [{
"name": "a2",
"childrens": [{
"name": "a3",
"childrens": [{
"name": "a4",
}]
}]
}]
}]
#希望通过递归实现,但想了好久,失败了 T_T
def CreateSubNode(list,i,data=[]):
i = 0
for item in list:
temp = {
"name": item,
"childrens":[]
}
if i < len(list)-1:
temp["childrens"].append( CreateSubNode(list,i+1,data))
data.append(temp)
return data
if __name__ == "__main__":
CreateSubNode(list,0,[])
怎么改进呢?
是不是这个效果:
[{'name': 'a1', 'childrens': [{'name': 'a2', 'childrens': [{'name': 'a3', 'childrens': [{'name': 'a4'}]}]}]}]
递归实现:
def CreateSubNode(list):
if len(list)==1:return [{'name':list[0]}]
data = [{
"name": list[0],
"childrens":CreateSubNode(list[1:])
}]
return data
if __name__ == "__main__":
list=['a1', 'a2','a3', 'a4']
print(CreateSubNode(list))
你题目的解答代码如下:
# 定义一个list
list=['a1', 'a2','a3', 'a4']
def CreateSubNode(list):
data = []
p = data
for i in range(len(list)):
temp = {
"name": list[i]
}
if i < len(list)-1:
temp["childrens"] = []
p.append(temp)
if i < len(list)-1:
p = temp["childrens"]
return data
if __name__ == "__main__":
data=CreateSubNode(list)
print(data)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!