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

如何在不修改原字典的情况下移除嵌套字典中子键为空的父键?

在嵌套字典中移除包含空子键的父键(不修改原字典)

给定一个嵌套字典,需要移除所有包含指定空子键的父键,同时保留原字典不变,返回处理后的新字典。比如示例字典中,items下的键A因tags为空数组需要被移除。

解决方案代码

def remove_parent_key(original_dict, check_key):
    new_dict = {}
    for key, value in original_dict.items():
        if isinstance(value, dict):
            # 检查当前子字典是否包含目标空键,是则跳过该父键
            if check_key in value and value[check_key] in ('', [], {}, None):
                continue
            # 递归处理子字典,再加入新字典
            processed_child = remove_parent_key(value, check_key)
            new_dict[key] = processed_child
        else:
            # 非字典类型的值直接保留
            new_dict[key] = value
    return new_dict

使用示例

针对你提供的字典d,调用方式如下:

processed_d = remove_parent_key(d, 'tags')

此时原字典d完全不变,processed_d中的outer_key_1['items']将只保留键B。

逻辑说明

  • 函数通过递归遍历原字典的所有层级,完全不修改原字典,而是从头构建一个新字典
  • 遍历每个键值对时,若值是字典:
    1. 先判断该字典是否包含目标键check_key,且对应值为空(空字符串、空列表、空字典、None),满足则跳过该键(即不加入新字典,实现移除)
    2. 不满足则递归处理该子字典,将处理后的结果加入新字典
  • 非字典类型的值直接复制到新字典中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:12:38