多字典指定键加权求和:替代繁琐判断的优化实现方案咨询
优化多字典带权重的键值求和实现
核心思路
把字典与对应的权重打包成元组列表,遍历目标键时,统一用dict.get(key, 0)获取值(不存在则取0),再按权重累加,彻底避免冗余的if判断,同时大幅提升扩展性。
完整实现代码
# 定义原始字典 dict_1 = {"Mike": 1, "Lilly": 2, "David": 3} dict_2 = {"Mike": 4, "Peter": 5, "Kate": 6} dict_3 = {"Mike": 7, "Lilly": 8, "Jack": 9} # 把字典和对应权重配对,新增字典时直接加元组即可 dicts_with_weights = [(dict_1, 1), (dict_2, 2), (dict_3, 3)] target_keys = ["Mike", "Lilly", "David"] # 遍历目标键计算加权和 for key in target_keys: total = 0 for d, weight in dicts_with_weights: total += d.get(key, 0) * weight print(f"{key} 的加权总和: {total}")
输出结果
Mike 的加权总和: 30 Lilly 的加权总和: 26 David 的加权总和: 3
(手动拆解逻辑:Mike=1*1+4*2+7*3,Lilly=2*1+0*2+8*3,David=3*1+0*2+0*3)
优势说明
- 扩展性极强:新增字典时,只需要在
dicts_with_weights列表里添加(新字典, 对应权重),不需要修改循环逻辑 - 代码简洁:用
dict.get()替代了大量"键是否存在"的if判断,逻辑更清晰 - 可读性高:字典与权重的对应关系一目了然,维护成本低
内容的提问来源于stack exchange,提问作者Mark K
相关产品推荐
相关产品推荐

