Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从python中的值列表创建嵌套字典_Python_List_Dictionary_Recursion - Fatal编程技术网

如何从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
的递归调用的值,但如果为空,它将只返回一个字典,最后一个键指向累积字典。