如何移除Python嵌套字典的指定key且保留值并合并到上层节点
嵌套字典递归移除指定Key并保留值的实现方案
实现逻辑
- 递归遍历所有嵌套的字典、列表结构
- 处理列表时遍历每个元素,若元素是包含目标Key的字典,将该Key对应的列表值展开后追加到上层列表
- 处理字典时匹配到目标Key直接返回处理后的对应值,不保留该Key;其余键值对递归处理值后正常保留
- 基础数据类型直接返回原值
完整代码
def remove_key_and_flatten_value(obj, target_key): # 处理列表类型 if isinstance(obj, list): new_list = [] for item in obj: processed = remove_key_and_flatten_value(item, target_key) # 若当前元素是包含目标Key的字典,展开值追加到列表 if isinstance(item, dict) and target_key in item: new_list.extend(processed) else: new_list.append(processed) return new_list # 处理字典类型 elif isinstance(obj, dict): new_dict = {} for k, v in obj.items(): if k == target_key: # 匹配到目标Key直接返回处理后的值,不保留当前Key return remove_key_and_flatten_value(v, target_key) new_dict[k] = remove_key_and_flatten_value(v, target_key) return new_dict # 其他基础类型直接返回 else: return obj
使用示例
# 输入示例字典 dict_x = {"key1": "value1", "key2": [{"key3": "value3"}, {"key4": [{"key5": "value5"}, {"key6": "value6"}]}]} # 调用函数移除key4 result = remove_key_and_flatten_value(dict_x, "key4") print(result)
输出结果
{'key1': 'value1', 'key2': [{'key3': 'value3'}, {'key5': 'value5'}, {'key6': 'value6'}]}
适用场景说明
支持任意深度的嵌套结构处理,若待移除Key对应的不是列表类型,可根据实际需求调整返回逻辑即可适配。
内容的提问来源于stack exchange,提问作者Ali Uyanık
相关产品推荐
相关产品推荐

