2015-04-07 111 views
-2

嵌套的字典比方说,我有一个看起来像这样如何创建值列表在python

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

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

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

我该怎么做?

+0

你想得到'{“foo”:{“bar”:{“baz”:{}}}'? –

+0

你是什么意思=>? – flycee

+0

递归是答案。 :) – Shashank

回答

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

我不会使用可变对象作为默认参数,虽然... – Ben

+0

@Ben感谢您注意到本,我已经修复它使用'None'作为默认参数。 – Shashank

+0

@Shashank return语句在做什么?我真的不知道如何阅读。你能解释一下吗? –

1

为了让程序是可读的,我修改了factorial一点。 因为学习如何使用递归,阶乘和斐波那契对于初学者来说非常基础。

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

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

print recursion(a)