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
添加回答
举报