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

如何从字典列表统计全年销售额?缺失月份按0计算

问题与解决方案

问题描述

我有如下字典列表数据:

[
    {'account': 'Amazon', 'amount': 300, 'day': 3, 'month': 'June'},
    {'account': 'Facebook', 'amount': 550, 'day': 5, 'month': 'May'},
    {'account': 'Google', 'amount': -200, 'day': 21, 'month': 'June'},
    {'account': 'Amazon', 'amount': -300, 'day': 12, 'month': 'June'},
    {'account': 'Facebook', 'amount': 130, 'day': 7, 'month': 'September'},
    {'account': 'Google', 'amount': 250, 'day': 27, 'month': 'September'},
    {'account': 'Amazon', 'amount': 200, 'day': 5, 'month': 'May'}
]

目前我使用以下代码仅能统计出五月、六月、九月的金额总和:

year_balance = sum(d["amount"] for d in my_dict)
print(f"The total year balance is {year_balance} $.")

请问如何编写代码,将字典中未提及的月份金额按0计算,从而得到全年的总销售额?


解决方案

首先明确:仅计算全年总销售额的话,你原代码的结果就是正确的——因为未提及的月份金额为0,加0不会改变总和。但如果需要同时统计每个月的金额(包括未发生交易的月份显示0),再计算全年总和,可以用以下两种方法:

方法1:手动初始化全年月份字典

先定义全年12个月份,初始化每个月金额为0,再遍历数据更新对应月份的金额,最后求和:

# 定义全年所有月份
all_months = ['January', 'February', 'March', 'April', 'May', 'June',
              'July', 'August', 'September', 'October', 'November', 'December']

# 初始化每月金额,默认值为0
monthly_balance = {month: 0 for month in all_months}

# 遍历数据,累加对应月份的金额
for entry in my_dict:
    monthly_balance[entry['month']] += entry['amount']

# 计算全年总销售额
total_year_sales = sum(monthly_balance.values())

# 可选择打印每月明细和全年总和
print("每月销售额明细:")
for month, amount in monthly_balance.items():
    print(f"{month}: {amount} $")
print(f"\n全年总销售额:{total_year_sales} $")

方法2:用collections.defaultdict简化统计

先用defaultdict统计已有月份的金额,再遍历全年月份,用get方法默认取0,最后求和:

from collections import defaultdict

# 统计已有月份的累计金额
monthly_balance = defaultdict(int)
for entry in my_dict:
    monthly_balance[entry['month']] += entry['amount']

# 定义全年所有月份
all_months = ['January', 'February', 'March', 'April', 'May', 'June',
              'July', 'August', 'September', 'October', 'November', 'December']

# 计算全年总和:已有月份金额 + 未出现月份的0
total_year_sales = sum(monthly_balance.get(month, 0) for month in all_months)

print(f"全年总销售额:{total_year_sales} $")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:40:44