2011-08-01 4 views
0

Je fonction récursive qui marchent imbriquée dict et retour nécessaire la valeur de clé:Comment retourner la valeur d'une fonction récursive

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

c=recurs(d) 
print c 

Et comment je peux obtenir ces valeurs?

+0

En ce moment son Aucun retour, mais dict ont deux listes, puis J'essaie d'utiliser yield son retour vide objet iter – Denis

+1

Cela n'a aucun sens (logiquement) de renvoyer une (une) valeur à la fonction car elle appelle 'recurs' potentiellement plusieurs fois. Donc, la question est, quel genre de valeur de retour attendez-vous? Une seule valeur? Une liste? –

Répondre

3

La meilleure façon d'obtenir un iterator aplati est d'écrire une fonction de générateur:

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

bingo =) c'est bonne réponse, merci – Denis

1

Juste return il:

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

Cela mettra fin à la boucle après la première itération. Bien que je ne comprends pas ce que la boucle est pour ... –

+0

et au lieu de deux listes de valeurs, je reçois un – Denis

+0

@Felix Je suppose que l'OP a besoin de valeur unique. –

Questions connexes