작동하지 I 후속 코드를 가지고 :파이썬 - 재귀
d = {'init':
[{'solve':
[{'subsolve':
[{'vals': [{'Blade summary': 'asdf'},
{'Blade summary': 'fdsa'}]}]},
{'subsolve':
[{'vals': [{'Blade summary': 'ffff'}]}]}]},
{'solve':
[{'subsolve':
[{'vals': 'bbbb'}]}]}]}
def parseDics(lst, mainReg):
print('call')
for dic in lst:
for key, vals in dic.items():
if key == mainReg:
if mainReg == 'vals':
yield vals
parseDics(vals, 'vals')
else:
parseDics(vals, mainReg)
if __name__=='__main__':
pp.pprint(list(parseDics(d['init'], 'solve')))
기능 자체가 완전하지 않다,하지만 지금은 문제가되지 않습니다. 문제는 재귀 호출이 작동하지 않는다는 것입니다. 나는 지금 그것을 실행하려고하면
, 나는 단지이 출력을 얻을 것이다 :
call
[]
그래서 함수는 한 번만 호출했다. 중첩 된 함수 호출 (PyCharm을 사용하고 있습니다.)을 시도 할 때 단순히 호출 할 수 없으며 함수 호출이 "과도한 실행"입니다.
내가 뭘 잘못하고 있니? 왜 함수가 재귀 적으로 호출되지 않습니까?
'yield from parseDics (vals,'vals ')'? –
당신의 코드는 키가'solve' 또는'vals'인지 검사 만합니다.'subsolve'를 키로 사용하는 사전 항목으로 결코 회귀하지 않습니다. – Dunes