如何从python中的值列表创建嵌套字典

时间:2015-04-07 05:28:12

标签: python list dictionary recursion

假设我有一个看起来像这样的列表

['foo', 'bar', 'baz']

此列表包含嵌套的键列表。从这个列表中,我想创建一个这样的字典:

{"foo": {"bar": {"baz": {}}}

我该怎么做?

2 个答案:

答案 0 :(得分:1)

这是一个简单的递归函数:

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[:])

答案 1 :(得分:1)

为了让程序可读,我稍微修改了阶乘。 因为学习如何使用Recursion,Factorial和Fibonacci对初学者来说是如此基础。

a = ['foo', 'bar', 'baz']

def recursion(arr):    
    if len(arr)==0:
        return {}
    else:
        key = arr.pop()
        return {key: recursion(arr)}

print recursion(a)