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

如何对两个同键不同字典的指定末尾值求和并生成新字典?

解决两个字典同键列表末尾数值求和/相乘的问题

问题分析

你需要基于两个字典中相同键对应的列表,保留dict1列表的前序元素,将最后一个数值替换为两个列表末尾数值的和(或乘积),同时避免直接覆盖原有值。

代码实现

首先定义你的原始字典:

dict1 = {'Manubar': ['string', 'string2', 'string3', 222, 23, 45], 'Schorsch': ['string', 'string2', 'string3', 122, 65, 44]}
dict2 = {'Manubar': ['string', 'string2', 543, 21, 34], 'Schorsch': ['string', 'string2', 354, 10, 65]}

求和版本

dict3 = {}
# 遍历两个字典的共同键(假设键完全一致,若有差异可改用dict1.keys() & dict2.keys())
for key in dict1:
    # 复制dict1的列表,避免修改原数据
    result_list = dict1[key].copy()
    # 替换最后一个元素为两个列表末尾数值的和
    result_list[-1] = dict1[key][-1] + dict2[key][-1]
    dict3[key] = result_list

print(dict3)
# 输出:
# {'Manubar': ['string', 'string2', 'string3', 222, 23, 79], 'Schorsch': ['string', 'string2', 'string3', 122, 65, 109]}

相乘版本

只需把求和的+替换为*:

dict3 = {}
for key in dict1:
    result_list = dict1[key].copy()
    result_list[-1] = dict1[key][-1] * dict2[key][-1]
    dict3[key] = result_list

print(dict3)
# 输出:
# {'Manubar': ['string', 'string2', 'string3', 222, 23, 1530], 'Schorsch': ['string', 'string2', 'string3', 122, 65, 2860]}

关键说明

  1. 使用list.copy()复制列表:避免直接修改dict1中的原始列表数据。
  2. 通过[-1]访问列表末尾元素:无论列表长度如何,都能精准获取最后一个数值。
  3. 处理键不一致的情况:如果两个字典的键不完全重叠,可改用common_keys = dict1.keys() & dict2.keys(),仅遍历共同键,避免KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:25:27