我试图从字典中获取所有的key、val对,我的目标是当key-value对与某个值匹配时从函数返回true,如果没有匹配则返回false。我观察到在递归调用中使用“return”时,“for”循环会导航到最内层的循环,但会在那里停止,并且不会执行其余的外层循环。不知道为什么?根据递归的概念,它们应该。我错过了什么
下面是代码片段
resp = ' { "name": "Stuart", "response" : { "age" : "27", "weight" : "50"}, "address" : "New York" }'
response = json.loads(resp)
def recursive_loop(response):
for key, value in response.items():
if type(value) is dict:
return recursive_loop(value)
elif key == "address" and value == "New York":
print ("Match")
return True
else:
print (value)
return False
z = recursive_loop(response)
print (z)
我得到的输出:
Stuart
27
50
False
我期望的结果是:
Stuart
27
50
Match
True
只有当递归返回
True
时,才希望从循环中提前返回。另一方面,您希望继续循环并检查其余值,以防其中一个值满足您的条件。要以最小的更改完成此操作,只需添加一个条件来测试递归调用的结果这将导致深度优先搜索,并在首次发现真实情况时返回
return
停止函数的执行,无论递归或它处于循环中,因此无法恢复您可能需要查看
yield
返回函数就是问题所在。努力
相关问题 更多 >
编程相关推荐