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

Python中合并多个字典并按年份汇总Total值的方法

解决方案

首先要指出你给出的州字典写法存在问题:Python 字典不允许重复键,像 Indiana = {Year:2018, Total:102, Year:2017, Total:84....} 这种写法会直接覆盖重复的键,最终每个州的字典只会保留最后一组 Year 和 Total,完全不符合数据存储需求。

先把数据改成合理结构,再实现按年份汇总的功能,下面分两种常见的合理结构给出实现代码:

情况1:每个州的字典以年份为键,Total为值

示例数据:

Indiana = {2018: 102, 2017: 84}
Alabama = {2018: 115, 2017: 116}
Colorado = {2018: 71, 2017: 76}

汇总代码:

# 把所有州的字典存入一个列表
state_data = [Indiana, Alabama, Colorado]
continentals = {}

for state in state_data:
    for year, total in state.items():
        if year in continentals:
            continentals[year] += total
        else:
            continentals[year] = total

# 若需要转换成「Year/Total 成对」的结构(注意:Python 字典不支持重复键,因此用列表嵌套字典)
continentals_list = [{"Year": year, "Total": total} for year, total in continentals.items()]
print(continentals_list)

情况2:每个州的数据是包含年份和Total的字典列表

示例数据:

Indiana = [{"Year": 2018, "Total": 102}, {"Year": 2017, "Total": 84}]
Alabama = [{"Year": 2018, "Total": 115}, {"Year": 2017, "Total": 116}]
Colorado = [{"Year": 2018, "Total": 71}, {"Year": 2017, "Total": 76}]

汇总代码:

state_data = [Indiana, Alabama, Colorado]
continentals = {}

for state in state_data:
    for entry in state:
        year = entry["Year"]
        total = entry["Total"]
        if year in continentals:
            continentals[year] += total
        else:
            continentals[year] = total

# 转换成列表嵌套字典的结构
continentals_list = [{"Year": year, "Total": total} for year, total in continentals.items()]
print(continentals_list)

重要说明

你想要的 Continentals = {Year:2018, Total:xxx, Year:2017, Total:xxx} 结构在 Python 里无法实现,因为字典的键必须唯一,重复的 Year 和 Total 键会被直接覆盖。因此最终只能用「年份为键、汇总Total为值」的字典,或者列表嵌套字典的形式来存储每一年的汇总数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:51:33