扁平化嵌套字典时如何按深层优先规则覆盖重复键的取值
实现思路
- 采用深度优先遍历递归处理嵌套字典,仅收集值为非字典类型的键值对,遍历过程中内层键值对会覆盖外层同名键,自动保证最内层取值优先级最高。
- 深拷贝原字典完整保留原有嵌套结构,再用收集到的键值对覆盖顶层同名键即可得到目标结果。
完整实现代码
import copy def collect_inner_kv(d: dict) -> dict: flat_res = {} for k, v in d.items(): if isinstance(v, dict): # 递归收集子字典内的键值对,内层优先级更高 inner_res = collect_inner_kv(v) flat_res.update(inner_res) else: flat_res[k] = v return flat_res def process_nested_dict(input_dict: dict) -> dict: # 收集所有内层优先的扁平键值对 flat_kv = collect_inner_kv(input_dict) # 深拷贝原字典,完整保留原有嵌套结构,同时避免修改原字典 output_dict = copy.deepcopy(input_dict) # 覆盖顶层同名键的值 output_dict.update(flat_kv) return output_dict
测试验证
示例输入
input_dict = { 'abc': 1, 'foo': 2, 'cba': {'abc': 3, 'baz': { 'foo': 4 }} }
运行代码
print(process_nested_dict(input_dict))
输出结果
{'abc': 3, 'foo': 4, 'cba': {'abc': 3, 'baz': {'foo': 4}}}
完全符合预期输出要求。
内容的提问来源于stack exchange,提问作者DSteman
相关产品推荐
相关产品推荐

