如何从python中的值列表创建嵌套字典
假设我有一个列表,看起来像这样如何从python中的值列表创建嵌套字典,python,list,dictionary,recursion,Python,List,Dictionary,Recursion,假设我有一个列表,看起来像这样 ['foo', 'bar', 'baz'] 此列表包含一个嵌套的键列表。从这个列表中,我想创建一个如下的dict: {"foo": {"bar": {"baz": {}}} 如何执行此操作?这是一个简单的递归函数: def nest(l, d=None): if d is None: d = {} k = l.pop() return l and nest(l, {k: d}) or {k: d} 要对原始列表调用无副作用的函数,可以
['foo', 'bar', 'baz']
此列表包含一个嵌套的键列表。从这个列表中,我想创建一个如下的dict:
{"foo": {"bar": {"baz": {}}}
如何执行此操作?这是一个简单的递归函数:
def nest(l, d=None):
if d is None: d = {}
k = l.pop()
return l and nest(l, {k: d}) or {k: d}
要对原始列表调用无副作用的函数,可以传入一个浅层切片副本:
nest(l[:])
为了让程序可读,我稍微修改了阶乘。 因为学习如何使用递归,阶乘和斐波那契是初学者的基础
a = ['foo', 'bar', 'baz']
def recursion(arr):
if len(arr)==0:
return {}
else:
key = arr.pop()
return {key: recursion(arr)}
print recursion(a)
你想得到
{“foo”:{“bar”:{“baz”:{}}
?你说的=>?递归是什么意思?答案是:@Ben感谢你注意到Ben,我已经将它固定为使用None
作为默认参数。@Shashank return语句在做什么?我真的不知道该怎么读。你能解释一下吗?@dr.jekyllandme当然。如果列表l
有任何元素,它将返回返回对nest
的递归调用的值,但如果为空,它将只返回一个字典,最后一个键指向累积字典。