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

如何通过嵌套缺失键列表高效为Python字典补全另一字典的对应值

实现方案

因为你已经通过对比拿到了所有a1缺失的键路径,不需要二次遍历两个字典做差异校验,直接遍历路径列表逐层定位赋值即可,是当前场景下时间复杂度最低的实现方式,完全不会覆盖a1原有键值。

核心实现代码

def add_missing_keys(target_dict, source_dict, key_paths):
    for path in key_paths:
        # 逐层定位到嵌套字典的倒数第二层级
        cur_target = target_dict
        cur_source = source_dict
        for key in path[:-1]:
            cur_target = cur_target[key]
            cur_source = cur_source[key]
        # 仅给缺失的最后一个键赋值
        cur_target[path[-1]] = cur_source[path[-1]]

测试用例

# 原始字典
a1 = {'a': 2, 'b': 3, 'c': 1, 'e': {'f': 6, 'h': {'j': 3}}}
a2 = {'a': 2, 'c': 2, 'd': 4, 'e': {'f': 6, 'g': 8, 'h': {'i': 10}}}
# 缺失键路径
missing_keys = [['d'], ['e', 'g'], ['e', 'h', 'i']]

# 调用方法
add_missing_keys(a1, a2, missing_keys)
print(a1)

输出结果

{'a': 2, 'b': 3, 'c': 1, 'e': {'f': 6, 'g': 8, 'h': {'j': 3, 'i': 10}}, 'd': 4}

方案优势

  • 时间复杂度为O(k),k为所有路径的总层数之和,无多余计算开销
  • 不会修改a1原有键的取值,完全符合不覆盖的要求
  • 逻辑简单易维护,适配任意层级的嵌套字典结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:05