2013-09-29 122 views
0

我具有由其他字典的像這樣(例如)一個python詞典:字典類型的字典蟒

{2: {4: {5: {6: {7: None}}}, 7: None}, 7: None} 

我想,這樣我最終提取的鍵:

[2,4,5,6,7,None] 
[2,7,None] 
[7,None] 

我試圖用遞歸函數解決這個問題,但是沒有運氣...但是沒有運氣...

def f(d): 
    paths = [] 
    try: 
     for key in f.keys(): 
      path.append(f(d[key])) 
    pass: 
     pass 

有沒有辦法做到這一點如何?

+0

我不明白你如何讓你的期望的輸出沒有。你能解釋一下嗎? – TerryA

+0

如果您只是在子呼叫中丟棄中間結果(即'路徑),則遞歸不起作用。 –

回答

1

下,似乎這樣的伎倆:

def f(d): 
    paths = [] 
    for key, value in d.items(): 
     if value is None: 
      paths.append([key, value]) 
     else: 
      internal_lists = f(value) 
      for l in internal_lists: 
       paths.append([key] + l) 
    return paths 

1)你試試:循環寫的不好:語法是

try: 
    xxx 
except: 
    xxx 

,做你期望一個失敗嗎?爲什麼嘗試?

for key in f.keys(): 

f是一個函數,它不具有鍵:既不

2)你的循環不可能是正確的。 d確實。

3)當用鑰匙打交道時,你需要在某處輸出保持它,而你暫時

+0

謝謝!效果很好。你在第1),2)和3)點是對的,謝謝你的評論! – Anders

+1

作爲一個生成器,它看起來會更漂亮:https://gist.github.com/eallik/6752160 :) **更新:**在Python 3中,'yield from'使它更好。 –

+0

謝謝@ ErikAllik,非常乾淨,我會查找那個(我使用2.7 btw。) – Anders