我有下面的代碼:Python的 - 遞歸不工作
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)時,我簡直不能夠和函數調用是「過度的」。
我在做什麼錯?爲什麼不是我遞歸調用的函數?
'parseDics(vals,'vals')'的產量? –
你的代碼只檢查鍵是否爲'solve'或'vals',它永遠不會遞歸到具有'subsolve'作爲鍵的字典項目中。 – Dunes