如何通过全深度递归清理嵌套字典中的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
相关产品推荐
相关产品推荐

