Python:复杂dict/json递归处理(判断是否存在某个key、删除

系统 2009 0
            
              
#嵌套json/dict排序
def dict_ordered(obj):
    if isinstance(obj, dict):
        return sorted((k, dict_ordered(v)) for k, v in obj.items())
    if isinstance(obj, list):
        return sorted(dict_ordered(x) for x in obj)
    else:
        return obj

#递归删除json/dict中的某个值
def dict_del(key,obj):
    if isinstance(obj, dict):
        if key in obj:
            obj.pop(key)
        for k, v in obj.items():
            dict_del(key,v)
    if isinstance(obj, list):
        for x in obj:
            dict_del(key,x)
    else:
        pass
    return obj

#判断json/dict中是否存在某个key
def dict_has_key(key,obj):
    if isinstance(obj, dict):
        for k, v in obj.items():
            if k == key:
                return True
            else:
                ret = dict_has_key(key,v)
                if ret:
                    return True
    elif isinstance(obj, list):
        for x in obj:
            ret = dict_has_key(key,x)
            if ret:
                return True
    else:
        pass


if __name__ == '__main__':
    tester = {
    "base_config":{
        "enforce":{
            "value":"0",
            "inherit":"0",
            "global":"0"
        },
        "modify":{
            "value":"0",
            "inherit":"0",
            "global":"0"
        }
    },
    "safe_control_list":{
        "list":[
            {
                "gid":"0",
                "gname":"全网计算机",
                "isactive":"1",
                "rule_id":"0",
                "rule_name":"请选择规则",
                "time_range":"所有时间",
                "time_range_id":"1",
                "policy_tpl":"33",
                "policy_tpl_id":"17",
                "isonline":"3",
                "priority":"1"
            }
        ]
    }
}

    print(dict_has_key("rule_id",tester))
    print(dict_del("policy_tpl_id",tester))
    print(dict_ordered(tester))
            
          

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论