为了账号安全,请及时绑定邮箱和手机立即绑定

python函数不返回值

python函数不返回值

陪伴而非守候 2023-03-30 09:42:28
我写了这个 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”,但没有返回任何内容。我究竟做错了什么?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

当你递归调用时,你不会返回任何东西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


查看完整回答
反对 回复 2023-03-30
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信