python函数不返回该值
我编写了这个python函数:python函数不返回该值,python,function,recursion,return,Python,Function,Recursion,Return,我编写了这个python函数: d ={'key1':{'key2':{'key11':{'key12':'value13'}}},'key3':[{'key4':'value2', 'key5': 'value3'}]} key_path = 'key1.key2.key11.key12' def recursive_search(d, key_path): key_parts = key_path.split('.') if len(key_parts) == 1:
d ={'key1':{'key2':{'key11':{'key12':'value13'}}},'key3':[{'key4':'value2', 'key5': 'value3'}]}
key_path = 'key1.key2.key11.key12'
def recursive_search(d, key_path):
key_parts = key_path.split('.')
if len(key_parts) == 1:
return d.get(key_parts[0])
elif isinstance(d.get(key_parts[0]), dict):
recursive_search(d.get(key_parts[0]), '.'.join(key_parts[1:]))
elif isinstance(d.get(key_parts[0]), list):
for i in d.get(key_parts[0]):
for key in i.keys():
if key == key_parts[1]:
recursive_search(i, '.'.join(key_parts[1:]))
x = recursive_search(d, 'key3.key4')
我希望返回'value2',但没有返回任何内容。我做错了什么?递归调用
递归搜索时,您没有返回任何内容。添加return
就可以了
d ={'key1':{'key2':{'key11':{'key12':'value13'}}},'key3':[{'key4':'value2', 'key5': 'value3'}]}
key_path = 'key1.key2.key11.key12'
def recursive_search(d, key_path):
key_parts = key_path.split('.')
if len(key_parts) == 1:
return d.get(key_parts[0])
elif isinstance(d.get(key_parts[0]), dict):
return recursive_search(d.get(key_parts[0]), '.'.join(key_parts[1:]))
elif isinstance(d.get(key_parts[0]), list):
for i in d.get(key_parts[0]):
for key in i.keys():
if key == key_parts[1]:
return recursive_search(i, '.'.join(key_parts[1:]))
x = recursive_search(d, 'key3.key4')
输出
value2
recursive\u search(i,,。).join(key\u parts[1:])
应该是return recursive\u search(i,,。。.join(key\u parts[1:])
(在两个地方类似)内部调用“recursive\u search”返回的值外部调用函数实例不会return
ed。如果要将此函数用于生产目的,我强烈建议使用此库,而不是从头开始实现此功能。
value2