嵌套字典中带yield和return的Python递归

2024-05-13 22:52:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习递归函数中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

我理解generator是如何工作的,以及为什么yield会像上面的代码那样工作。现在,如果我使用相同的代码,但是使用return并在那里放置一个check来检查空return,我仍然会遇到“NoneType”迭代问题,因为在某个地方返回了一个空结果:

^{pr2}$

我错过了什么?在


Tags: 代码in用法forreturnifvalueresult