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

如何通过全深度递归清理嵌套字典中的BEGIN_和Value冗余字段

嵌套字典冗余字段递归清理方案

实现逻辑

  • 按数据类型分支处理,递归覆盖所有嵌套层级,支持字典、字典列表嵌套场景
  • 字典类型优先执行单层冗余清理:先判断是否存在Value键,存在则直接取Value对应值;再判断是否存在BEGIN_键,存在则直接取BEGIN_对应值,逻辑与你现有单层级处理规则完全一致
  • 单层清理完成后,递归处理所有子节点内容
  • 字符串、数字、None等基础类型直接返回,无需额外处理

完整代码实现

def clean_nested_dict(raw_data):
    # 处理字典类型
    if isinstance(raw_data, dict):
        cleaned = raw_data
        # 按原有规则优先剥离当前层级的冗余字段
        if 'Value' in cleaned:
            cleaned = cleaned['Value']
        if 'BEGIN_' in cleaned:
            cleaned = cleaned['BEGIN_']
        # 递归处理清理后内容的子节点
        if isinstance(cleaned, dict):
            return {key: clean_nested_dict(value) for key, value in cleaned.items()}
        else:
            return clean_nested_dict(cleaned)
    # 处理列表(包含字典列表)场景
    elif isinstance(raw_data, list):
        return [clean_nested_dict(item) for item in raw_data]
    # 基础数据类型直接返回
    else:
        return raw_data

使用示例

你给出的两个测试场景运行效果如下:

# 测试场景1:depart嵌套结构
test1 = {'depart': {'BEGIN_': {'id': {'Value': ''},
             'code': {'Value': ''},
             'name': {'Value': ''},
             'declNameList': None}}}
print(clean_nested_dict(test1))
# 输出:{'depart': {'id': '', 'code': '', 'name': '', 'declNameList': None}}

# 测试场景2:status嵌套结构
test2 = {'status': {'BEGIN_': {'statusCode': {'Value': '0'}}}}
print(clean_nested_dict(test2))
# 输出:{'status': {'statusCode': '0'}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:39:05