python 1维list怎么转成2维

# 定义一个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))

img

你题目的解答代码如下:

# 定义一个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)

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632