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

如何用Python提取多层嵌套JSON中Address-Zip下的所有VALUE值?

提取任意嵌套Zip编码对应的VALUE值(Python)

核心思路

用递归遍历处理不确定层级的嵌套结构,只要键名包含"Zip"(兼容大小写),就深入查找对应的VALUE字段,直到遍历完所有嵌套层级。

代码实现

首先模拟嵌套数据结构(可替换为你的实际数据):

# 示例嵌套地址数据
sample_address_data = {
    "Address": {
        "Zip": {
            "Zip5": {"VALUE": "12345"},
            "Zip4": {"VALUE": "6789"},
            "SubZip": {
                "Zip1": {"VALUE": "001"},
                "Zip2": {"VALUE": "002"}
            }
        },
        "Street": "Main St"
    },
    "BillingAddress": {
        "Zip": {"VALUE": "98765"}
    }
}

然后定义递归提取函数:

def extract_zip_values(data, results=None):
    # 初始化结果列表(避免递归时重复创建)
    if results is None:
        results = []
    # 遍历当前层级的所有键值对
    for key, value in data.items():
        # 匹配所有带"Zip"的键(不区分大小写)
        if "zip" in key.lower():
            # 如果当前值是字典,继续递归遍历子层级
            if isinstance(value, dict):
                # 找到VALUE字段就存入结果
                if "VALUE" in value:
                    results.append((key, value["VALUE"]))
                # 继续遍历子结构,确保不遗漏深层嵌套的Zip
                extract_zip_values(value, results)
            # 处理非字典类型的Zip值(比如直接存储字符串的情况)
            else:
                results.append((key, value))
    return results

使用示例

# 提取所有Zip对应的VALUE
zip_results = extract_zip_values(sample_address_data)

# 格式化输出结果
print("提取结果:")
for zip_type, value in zip_results:
    print(f"{zip_type}: {value}")

输出结果

提取结果:
Zip: 
Zip5: 12345
Zip4: 6789
SubZip: 
Zip1: 001
Zip2: 002
Zip: 98765

自定义调整

  • 如果只需要特定类型的Zip(比如仅Zip5/Zip4),把键判断条件改成:key in ["Zip5", "Zip4", "Zip"]
  • 如果VALUE键名大小写不固定(比如value),用value.get("VALUE", "")替代直接索引,避免报错
  • 如果要去重或排序,可以对结果列表做后续处理,比如sorted(list(set(zip_results)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:36:16