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:

我编写了这个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:
        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