[英]Python recursion with yield and return in nested dictionary
我試圖在遞歸函數中學習yield和return的使用。 我有一個嵌套字典,我正在尋找一個特定的值。
使用“yield”時,以下函數運行正常並成功返回找到的值:
def findvalue (value, document):
if isinstance (document, list):
for d in document:
for result in findvalue(value, d):
yield result
if isinstance (document, dict):
for k,v in document.items():
if v == value:
yield v
elif isinstance (v, dict):
for result in findvalue(value, v):
yield result
elif isinstance (v, list):
for d in v:
for result in findvalue(value, d):
yield result
我理解生成器如何工作以及為什么yield會在上面的代碼中完成它的工作。 現在,如果我使用相同的代碼,但返回並在那里檢查以檢查空返回,我仍然以“NoneType”迭代問題結束,因為在這個代碼中返回一個空結果:
def valuefind (value, document):
if isinstance (document, list):
for d in document:
for result in valuefind(value, d):
if result is not None:
return result
if isinstance (document, dict):
for k, v in document.items():
if v == value:
return v
elif isinstance (v, dict):
for result in valuefind(value, v):
if result is not None:
return result
elif isinstance (v, list):
for d in value:
for result in valuefind(value, d):
if result is not None:
return result
我在這里錯過了什么?
我相信你可以改變這個:
for result in valuefind(value, v):
if result is not None:
return result
對此:
return valuefind(value, v)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.