递归
def get_value_from_dict(key, tdict): """ 从Json中获取key值, param key: param tdict:字典 param tem_list: return: """ #if not isinstance(tdict, dict): # return tdict + "is not dict" if key in tdict.keys(): print(1) return tdict[key] else: for value in tdict.values(): if isinstance(value, dict): print(2,value) tmp = get_value_from_dict(key, value) print('tmp',tmp) if tmp == None: continue else: return get_value_from_dict(key, value) elif isinstance(value, (list, tuple)): print(3) tmp = get_value_from_list(key, value) if tmp == None: continue else: return get_value_from_list(key, value) return None def get_value_from_list(key, tlist): """ 从list或tuple中查找key的value值 :param key: :param tdict: :param tem_list: :return: """ for value in tlist: if isinstance(value, (list, tuple)): print(4) tmp = get_value_from_list(key,value) if tmp == None: continue else: return get_value_from_list(key,value) elif isinstance(value, dict): print(5) tmp = get_value_from_dict(key, value) if tmp == None: continue else: return get_value_from_dict(key, value) return None data = {'success': True, 'id': 'WF2020040217390412121390', 'result_desc': {'ANTIFRAUD_MODEL': {'6cddcf68e3a68b09': {'scorecard_reason_code': '申贷平台数变化率:5|关联手机设备数变化率:4|网贷平台绑卡事件数变化率:2|关联手机归属地变化率:2|关联社交账号数变化率:1|身份信息', 'model_version': '5', 'antifraud_model_score': 77}}, 'ANTIFRAUD': {'final_score': 80, 'risk_items': [{'rule_id': 5930275, 'policy_score': 80, 'score': 80, 'policy_mode': 'Weighted', 'decision': 'Accept', 'policy_decision': 'Reject', 'policy_name': '反欺诈模型智察分', 'risk_name': '智察分大于等于60分'}, {'rule_id': 5930097, 'policy_score': 5, 'score': 5, 'policy_mode': 'Weighted', 'decision': 'Accept', 'policy_decision': 'Accept', 'policy_name': '反欺诈规则', 'risk_name': '7天内身份证或手机号申请次数过多', 'risk_detail': [{'frequency_detail_list': [{'note': '7天内手机号申请次数', 'dim_type': 'accountMobile', 'count': '5', 'detail': '7天内手机号申请次数:5'}], 'type': 'frequency_detail'}]}], 'final_decision': 'REJECT'}}} get_value_from_dict('detail',data)
注意两函数中这个部分
posted on 2020-04-13 21:26 静静的白桦林_andy 阅读(228) 评论(0) 收藏 举报