python3 复杂数据 根据key名 直接提取所有符合要求的value值

时间:2024-03-17 08:14:00

代码如下  

def get_valuelist_by_key(cls, json_data, find_key):
    """根据find_key查询json_data中所有的value 返回所有满足条件的列表--深度遍历

    :param json_data: 匹配的json字符串,json_data必须为dict或者list
    :param find_key: key名
    :return: 多个匹配值
    """
    values_list = []

    def get_value_list(json, key):
        nonlocal values_list
        if isinstance(json, dict):
            for item, values in json.items():
                if str(item) == str(key):
                    values_list.append(str(json.get(item)))
                if isinstance(values, dict):
                    get_value_list(values, key=key)
                if isinstance(values, list):
                    get_value_list(values, key=key)
                else:
                    pass
        elif isinstance(json, list):
            for data in json:
                if isinstance(data, dict):
                    get_value_list(data, key)
        else:
            return []
        return values_list

    return get_value_list(json=json_data, key=find_key)

测试结果:

python3 复杂数据 根据key名 直接提取所有符合要求的value值