2015-04-07 109 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)