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

如何编写Pythonic的add_nested函数实现字典嵌套项添加?

实现符合Python风格的add_nested函数

可以通过遍历键路径的方式实现这个需求,下面是简洁直观的函数实现:

def add_nested(d, keys, value):
    current = d
    # 遍历路径中除最后一个键外的所有层级
    for key in keys[:-1]:
        # 确保当前层级的键对应字典,不存在则创建
        if key not in current or not isinstance(current[key], dict):
            current[key] = {}
        current = current[key]
    # 为最后一个键赋值
    current[keys[-1]] = value
    return d

函数工作逻辑

  • 用current变量追踪当前操作的字典层级,初始指向传入的原字典。
  • 遍历键路径的前n-1个键:
    • 若当前层级没有该键,或该键对应的值不是字典,则创建新字典并赋值给该键。
    • 将current切换到该键对应的字典,进入下一层级。
  • 最后把目标值赋给键路径的最后一个键,完成嵌套项的添加。

测试示例

# 初始字典
myDict = {
  "a1": {
    "a2": "Hello"
  }
}

# 添加嵌套项
myDict = add_nested(myDict, ["b1", "b2", "b3"], "z2")
myDict = add_nested(myDict, ["c1"], "z3")

# 打印结果
print(myDict)

执行后输出:

{
  'a1': {'a2': 'Hello'},
  'b1': {'b2': {'b3': 'z2'}},
  'c1': 'z3'
}

注意事项

  • 若键路径中某个已存在的键对应的值不是字典(比如是字符串),函数会将其覆盖为新字典,再继续后续层级的创建。
  • 字典是可变对象,函数内部直接修改原字典,返回原字典是为了支持示例中的赋值写法,也可以选择不返回(调用时无需赋值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:35:16