Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何返回递归函数的值_Python_Recursion_Dictionary - Fatal编程技术网

Python 如何返回递归函数的值

Python 如何返回递归函数的值,python,recursion,dictionary,Python,Recursion,Dictionary,我有一个递归函数,它遍历嵌套的dict并返回所需的键的值: def recurs(l): for key in l.keys(): if key == '_events': return l[key] else: recurs(l[key]) c=recurs(d) print c 我怎样才能得到这些值呢?只要返回它: def recurs(l): for key in l.keys():

我有一个递归函数,它遍历嵌套的dict并返回所需的键的值:

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

c=recurs(d)
print c

我怎样才能得到这些值呢?

只要
返回它:

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

只需返回
it:

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

获取平坦迭代器的最简单方法是编写生成器函数:

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

获取平坦迭代器的最简单方法是编写生成器函数:

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

现在它返回None,但是dict有两个列表,然后我尝试使用yield它的返回空iter objectIt从函数返回一个(一)值是没有意义的(逻辑上),因为它可能多次调用
recurse
。所以问题是,你期望什么样的回报值?单一值?一个列表?现在它的返回值为None,但是dict有两个列表,然后我尝试使用yield它的返回值为空的iter objectIt(逻辑上)从函数返回一个(一)值是没有意义的,因为它可能多次调用
recurse
。所以问题是,你期望什么样的回报值?单一值?在第一次迭代后将终止循环的列表。虽然我不明白循环的目的是什么…而不是两个值列表​​我明白了one@Felix我想OP需要一个值。@Roman:但哪一个呢?你认为他为什么想要第一个?这将在第一次迭代后终止循环。虽然我不明白循环的目的是什么…而不是两个值列表​​我明白了one@Felix我想OP需要一个值。@Roman:但哪一个呢?你认为他为什么想要第一个?