import json 1. 根据路径取值 def check_key_dict_value(json_data,defalut_value,keys=[]): if not json_data: return defalut_value for key in keys: if key in json_data.keys(): json_data = json_data[key] else: return defalut_value return json_data json_data0={'key1':{'key2':{'key3':93,'key4':15}}} result=check_key_dict_value(json_data0,defalut_value=0,keys=['key1','key2','key3']) 2. 未知路径取单个值 def check_key_dict_list_value(json_data,key): if isinstance(json_data, list): for i in json_data: if key in str(i): return check_key_dict_list_value(i,key=key) elif isinstance(json_data,dict): for k,v in json_data.items(): if k == key: return v if key in str(v): return check_key_dict_list_value(v,key=key) else: try: return check_key_dict_list_value((json_data),key=key) except:return
json_data1={'key1':{'key2':[{'key3':93,'key4':15}]}}
json_data1={'key1':{'key2':[{'key3':93,'key4':15}]}} result1 = check_key_dict_list_value(json_data1,key='key4') print(result1)
3. 未知路径取所有key名的值
def check_key_dict_list_value(json_data, key, lis): if isinstance(json_data, list): for i in json_data: if key in str(i): check_key_dict_list_value(i, key,lis) elif isinstance(json_data, dict): if json_data.get(key) != None: (json_data[key]) else: for k, v in json_data.items(): if key in str(v): check_key_dict_list_value(v, key,lis) else: try: check_key_dict_list_value((json_data),key,lis) except: return
lis = [] json_data1={'key1':{'key2':[{'key3':93,'key4':15},{'key3':93,'key4':15}]}} check_key_dict_list_value(json_data1, 'key4', lis) print(lis)