Python 字典表转对象

字典表转对象:
一个字典表,一个对象
迭代字典表的键值:
字典表的值:单个值、一个列表、一个字典
对于前两个,利用isinstance(value, ) 直接判断,
isinstance(value, list)

对于值为字典的,将当前字典的值作为一个新的字典,对应的对象为通过对象取键值得到 getattr(obj_tag, key) ,循环调用,直到转化成最基本的对最简单的键值设置属性setattr(obj_tag, key, None)

def dict2obj(dct, obj_tag):
“””
字典表转换对象
“”“

for key, value in dct.items():
    if isinstance(value, dict):
        sub_obj = getattr(obj_tag, key)  # 获取真实实体字段类型
        sub_dct = dct[key]
        if ObjUtils.is_valid(sub_dct):
            dict2obj(sub_dct, sub_obj)
        else:
            setattr(obj_tag, key, None)
    elif isinstance(value, list):
        list_obj = list()
        for idx, item in enumerate(value):
            if ObjUtils.is_valid(item):
                list_obj.append(item)
        setattr(obj_tag, key, list_obj)
    else:
        setattr(obj_tag, key, value)

return obj_tag

a=dict2obj(remark, rr)
print(a)

remark = {
    "status_code": 0,
    "evaluate_dto": {
        "risk_prob": 1.0,
        "hy_rank": 90.07,
        "similar_company_name_list": [
            "青岛麦德信电子科技有限公司",
            "四川林栖土猪品牌管理有限公司",
            "徐州中宇石油化工科技有限公司",
            "深圳市鸿庆包装制品有限公司" ],
        "risk_score": -59.982376832672855,

    },
    "status_message": "预测",
    "cancel_rate": 0.0,
    "features_res": {
               "cancel_cnt": 0,
                "fr_change_cnt": 0,
                "share_change_cnt": 0,
                "industry_dx_rate": 0.037639,
                "bidding_cnt": 0,
                "trade_mark_cnt": 0,
                "remark": "{\"status_code\": 0, \"evaluate_dto\": {\"total_rank\": 1.0, \"revoke_company_name_list\": [], \"hy_rank\": 90.07, \"company_name_list\": [\"青岛麦德信电子科技有限公司\",  \"重庆誉威商贸有限公司\", \"无极县万鸿塬无公害蔬菜种植专业合作社\", \"亿加乐(上海)网络技术有限公司\", \"深圳市巨雷科技有限公司\", \"深圳市歌娅姿服饰有限公司\", \"深圳市通源永隆贸易有限公司\", \"北京爱米丽投资管理咨询有限责任公司\", \"西宁永安房地产开发有限公司\", \"铜川市耀州区白石崖矿业有限公司\", \"中国石油天然气股份有限公司四川岷江销售分公司\", \"陕西宏英房地产开发有限公司\", \"海南中渔水产有限公司\", \"师宗县黑尔水电开发有限责任公司\", \"嘉兴市南坤置业有限公司\", \"廊坊红狮粉末涂料有限公司\", \"上海易航商贸有限公司\", \"四川锦城嘉鑫房地产开发有限公司\"], \"risk_score\": -59.982376832672855, \"revoke_prob\": 0.0087938716872225445, \"risk_detail_dto\": {\"interval_com_num_to_total_proportion\": 0.5, \"interval_real_revoke_prob_to_average\": 0.06, \"interval_real_revoke_prob\": 0.00483, \"risk_rank\": \"极低风险群\"}}, \"status_message\": \"预测\", \"cancel_rate\": 0.0, \"features\": {\"cancel_cnt\": 0, \"fr_change_cnt\": 0, \"share_change_cnt\": 0, \"industry_dx_rate\": 0.037639, \"bidding_cnt\": 0, \"trade_mark_cnt\": 0, \"remark\": null, \"judge_doc_cnt\": 0, \"address_change_cnt\": 0, \"industry_dx_cnt\": \"1237\", \"network_share_judge_doc_cnt\": 0, \"network_share_cancel_cnt\": 0, \"established_years\": 2, \"company_name\": \"重庆嘉禾一品餐饮管理有限公司\", \"judgedoc_cnt\": 0, \"predict_result\": null, \"regcap_change_cnt\": 0, \"network_share_zhixing_cnt\": 0, \"industry_all_cnt\": \"32865\", \"network_judgedoc_defendant_cnt\": 0}}",
                "judge_doc_cnt": 0,
                "address_change_cnt": 0,
                "industry_dx_cnt": "1237",
                "network_share_judge_doc_cnt": 0,
                "network_share_cancel_cnt": 0,
                "established_years": 2,
                "company_name": "重庆嘉禾一品餐饮管理有限公司",
                "judgedoc_cnt": 0,
                "predict_result": 0.0087938716872225445,
                "regcap_change_cnt": 0,
                "network_share_zhixing_cnt": 0,
                "industry_all_cnt": "32865",
                "network_judgedoc_defendant_cnt": 0
    }
}
# biz_svc = BizSvc()
# company_name = u'重庆嘉禾一品餐饮管理有限公司'
# self.companies_features_db_svc.delete_by_company_name(company_name)
rr = RiskRevokeRsp()



猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/81237721
今日推荐