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

如何遵循DRY原则优化多层Python字典的指定键值累加逻辑

优化嵌套字典取值累加的方案

核心思路

通过编写通用的嵌套字典值获取函数,配合清晰定义的键路径列表,消除重复的条件判断逻辑,完全符合DRY原则。

实现代码

首先定义安全获取嵌套值的辅助函数:

def get_nested_value(data, keys):
    current = data
    for key in keys:
        # 中途遇到非字典或不存在的键,直接返回None
        if not isinstance(current, dict) or key not in current:
            return None
        current = current[key]
    # 对应原代码的判断逻辑:空值不参与累加
    return current if current else None

然后定义目标字典和键路径列表,完成累加操作:

info = {
  "one": 1,
  "two": {
    "three": 3,
    "almost_three": 3.5
  },
  "four": {
    "five": {
      "six": 6 
    }
  }
}

# 每个元素是多层键组成的列表,清晰标注取值路径
NUMS = [
    ['one'],
    ['two', 'three'],
    ['two', 'almost_three'],
    ['four', 'five']
]

# 初始化累加值并遍历处理
total = 0
for key_path in NUMS:
    value = get_nested_value(info, key_path)
    if value:
        total += value

# 也可用生成器表达式简化累加(效果完全一致)
# total = sum(val for val in (get_nested_value(info, p) for p in NUMS) if val)

print(total)  # 按原代码逻辑输出:7.5 + {'six':6}

方案优势

  • 消除重复冗余:所有取值逻辑统一封装在辅助函数中,避免大量重复的if判断和get调用。
  • 维护成本低:键路径列表NUMS直观易读,新增或修改取值路径只需调整列表,无需改动核心逻辑。
  • 安全防错:辅助函数自动处理中途不存在的键或非字典类型,避免抛出KeyError异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:26:05