You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python递归提取复杂嵌套JSON中指定键的对应值

实现代码

以下是可直接运行的完整代码,适配任意嵌套深度的JSON结构:

import json

def extract_target_values(data, target_keys=('name', 'size', 'mountpoint')):
    result = []
    def recursive_parse(node):
        # 处理字典类型节点
        if isinstance(node, dict):
            current_item = {}
            for k, v in node.items():
                if k in target_keys:
                    current_item[k] = v
                # 递归遍历值的内容
                recursive_parse(v)
            # 当前字典存在目标key则加入结果
            if current_item:
                result.append(current_item)
        # 处理列表类型节点
        elif isinstance(node, list):
            for item in node:
                recursive_parse(item)
        # 字符串、数字、布尔值等基础类型无需处理直接跳过
        else:
            return
    recursive_parse(data)
    return result

# 加载本地JSON文件
with open('demk-bkp-001.json', encoding='utf-8') as file:
    data = json.load(file)

# 执行提取逻辑
extracted_data = extract_target_values(data)

# 打印结果验证
for item in extracted_data:
    print(item)
逻辑说明
  • 递归函数会自动遍历所有层级的字典、列表元素,无需提前知晓JSON的嵌套结构
  • 默认输出的结果为列表,每个元素是对应层级下包含name/size/mountpoint的关联字典,方便后续做结构化处理
  • 如果仅需要收集所有目标key的独立取值,不需要保留关联关系,可以用简化版实现:
def extract_target_values(data, target_keys=('name', 'size', 'mountpoint')):
    result = []
    def recursive_parse(node):
        if isinstance(node, dict):
            for k, v in node.items():
                if k in target_keys:
                    result.append(v)
                recursive_parse(v)
        elif isinstance(node, list):
            for item in node:
                recursive_parse(item)
    recursive_parse(data)
    return result

内容的提问来源于stack exchange,提问作者zed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:39:03