如何遍历Python字典生成按3年分组的温度汇总字典?
解决汇总布拉格温度字典的分组求和问题
修改后的完整代码
test_dict = {1775: 3, 1776: 1, 1778: 3, 1779: 12, 1780: 1, 1781: 5, 1782: 2, 1784: 8, 1786: 3, 1787: 4} sum_dict = {} # 获取原字典年份的边界,确定分组范围 min_year = min(test_dict.keys()) max_year = max(test_dict.keys()) # 从最小年份开始,每3年作为一组的起始点遍历 current_start = min_year while current_start <= max_year: # 定义当前组包含的3个连续年份 group_years = [current_start, current_start + 1, current_start + 2] # 累加组内年份对应的数值,不存在的年份按0计算 total = sum(test_dict.get(year, 0) for year in group_years) # 将起始年与对应总和存入汇总字典 sum_dict[current_start] = total # 切换到下一组的起始年 current_start += 3 print(sum_dict)
代码说明
- 先通过
min()和max()锁定原字典的年份范围,确保所有分组都覆盖有效年份。 - 用
while循环按步长3遍历所有分组起始年,保证每组是连续3年的集合。 - 使用
test_dict.get(year, 0)安全取值,避免因年份不在原字典中触发KeyError,不存在的年份贡献值为0。 - 借助生成器表达式
sum(...)快速计算组内总和,简化累加逻辑。 - 每处理完一组就将结果存入
sum_dict,最终生成完整的汇总字典。
运行结果
执行代码后会输出:
{1775: 4, 1778: 16, 1781: 7, 1784: 8, 1787: 4}
内容的提问来源于stack exchange,提问作者user13711870
相关产品推荐
相关产品推荐

