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

嵌套字典符号值替换为数字及多字典同键值求和方法

Python嵌套字典值替换+同键求和实现

先给出待处理的原始字典结构:

car_info = {
    "car1": {"engine": "+", "paint": "0", "transmission": "-"},
    "car2": {"engine": "-", "paint": "+", "transmission": "0"}
}

1. 符号值转对应数字

不用写多分支判断,先定义好符号和数字的映射关系,遍历字典做批量替换即可:

# 符号-数字映射规则
score_map = {"+": 1, "-": -1, "0": 0}

processed = {}
for car, parts in car_info.items():
    # 字典推导式直接生成替换后的子字典
    processed[car] = {k: score_map[v] for k, v in parts.items()}

替换完成后processed的输出如下,所有符号值都已经转为对应整数:

{
    'car1': {'engine': 1, 'paint': 0, 'transmission': -1},
    'car2': {'engine': -1, 'paint': 1, 'transmission': 0}
}

2. 子字典同键数值求和

逻辑很简单,先初始化和子字典键一致、初始值为0的汇总字典,再遍历所有条目累加对应键的数值即可:

# 取第一个子字典的键初始化汇总结构,不用硬编码键名
total = {k: 0 for k in next(iter(processed.values())).keys()}

for part_scores in processed.values():
    for part, score in part_scores.items():
        total[part] += score

最终得到的汇总结果:

{'engine': 0, 'paint': 1, 'transmission': -1}

如果不需要保留替换后的全量字典,也可以边转值边累加,减少内存占用,数据量大的时候更高效:

score_map = {"+": 1, "-": -1, "0": 0}
total = {}
for part_scores in car_info.values():
    for k, v in part_scores.items():
        total[k] = total.get(k, 0) + score_map[v]

运行结果和分步实现完全一致,后续新增car3、car4等条目时代码也不需要修改,自动适配。


内容的提问来源于stack exchange,提问作者Py-enthusiast

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:45:24