【发布时间】:2021-12-31 17:25:15
【问题描述】:
我的代码如下:
def und1(d):
for i in d:
if type(d[i])==dict:
und1(d[i])
else:
yield({i:d[i]})
Dict1 = {1: 'Geeks', 2: 'For', 3: 'Geeks',4:{5:'wevcn '}}
for z in und1(Dict1):
print(z)
我目前正在获得输出:
{1: 'Geeks'}
{2: 'For'}
{3: 'Geeks'}
预期输出:
{1: 'Geeks'}
{2: 'For'}
{3: 'Geeks'}
{5:'wevcn'}
问题:我的函数没有调用递归函数,它返回 null。谁能告诉我为什么?
【问题讨论】:
-
你打电话给
und1(d[i]),但你想改为yield from -
它正在调用它。它返回一个生成器,您立即将其丢弃
-
@Grismar 如果我使用 yield 从它给出 5 但我需要 {5:'wencn'} ,这就是为什么我想将 d[i] 作为递归函数发送
-
@juanpa.arrivillaga 为什么会被丢弃?我希望它递归调用直到最后一个嵌套字典
-
您确实递归调用了它。你没有对递归调用的结果做任何事情,所以返回的生成器被丢弃了
标签: python python-3.x recursion