【发布时间】:2020-11-12 11:32:35
【问题描述】:
我正在尝试从字典中获取所有键值对,我的目标是在键值对匹配某个值时从函数返回 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
【问题讨论】:
-
您认为什么“递归概念”应该允许函数在
returning 之后恢复? -
@ScottHunter,我明白你的意思,但有没有办法在整个执行完成之前不返回 False。我相信即使我没有在函数末尾明确使用“Return False”语句,python 默认情况下也会返回 None 停止执行。
-
我相信您会看到这种行为,因为您同时使用了迭代和递归。正在发生的事情是,一旦
type(value) is dict评估为 True,就会触发 return 语句,并且您正在迭代的剩余项目不会运行。也许这里的回报不是您想要的?
标签: python loops dictionary recursion return