python函数不返回值

我写了这个 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”,但没有返回任何内容。我究竟做错了什么?


陪伴而非守候
浏览 159回答 1
1回答

猛跑小猪

当你递归调用时,你不会返回任何东西recursive_search。添加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')print (x)输出value2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python