我如何将 ["one","two","three","four"]
这样的列表变成 {"one": {"two": {"three":{"four"}}}}
列表中的每一项都是字典中其他元素的后代?我认为它可以在递归函数中完成,但我不确定如何。
这是我尝试过的:
l = ["one","two","three","four"]
d = {}
for v in l[:-1]:
d[v] = {l}
d = d[v]
print(d)
谢谢!
一个递归的解决方案
def dictify(d):
if len(d) == 1:
return {d[0]}
else:
return {d[0]: dictify(d[1:])}
例如
>>> dictify(["one","two","three","four"])
{'one': {'two': {'three': {'four'}}}}
请注意,在上面的解决方案中,最里面的对象实际上是一个set
,而不是一个dict
。如果您希望所有对象都是 dict
那么您可以将解决方案修改为
def dictify(d):
if len(d) == 1:
return {d[0]: None}
else:
return {d[0]: dictify(d[1:])}
导致
>>> dictify(["one","two","three","four"])
{'one': {'two': {'three': {'four': None}}}}
我是一名优秀的程序员,十分优秀!