2011-08-01 191 views
0

的價值我有步行嵌套字典,並返回所需的關鍵價值遞歸函數:如何返回遞歸函數

def recurs(l): 
    for key in l.keys(): 
     if key == '_events': 
      return l[key] 
     else: 
      recurs(l[key]) 

c=recurs(d) 
print c 

以及我如何獲得這些價值?

+0

現在,它的返回無,但字典內有兩個列表,然後我嘗試使用yield返回空iter對象 – Denis

+1

從函數中返回(一個)值是沒有意義的,因爲它可能會多次調用'recurs'。所以問題是,你期望什麼樣的回報價值?單一的價值?一個列表? –

回答

3

得到一個平坦的迭代器最簡單的方法是寫一個發生器功能:

def recurs(l): 
    for key in l.keys(): 
     if key == '_events': 
      yield l[key] 
     else: 
      for x in recurs(l[key]): 
       yield x 
+0

賓果=)這就是正確的答案,thx – Denis

1

只是return它:

def recurs(l): 
    for key in l.keys(): 
     if key == '_events': 
      return l[key] 
     else: 
      return recurs(l[key]) 
+2

這將在第一次迭代後終止循環。雖然我不明白循環是什麼... –

+0

而不是兩個值列表我得到一個 – Denis

+0

@Felix我想OP需要單個值。 –