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

月度州级最小降雨量计算编程问题求助

按月份和州分组计算最小月度降雨量的解决方案

原代码的核心问题

原代码里的minimum_monthly_rainfall字典只按月份聚合了所有州的降雨量,没有区分不同州的数据,所以没法单独计算每个州当月的最小值。咱们需要把字典改成嵌套结构:{月份: {州: [降雨量列表]}},这样才能实现按双维度分组。

修改后的完整代码

minimum_monthly_rainfall = {}
is_first_line = True

for row in open("climate_data_2017.csv"):
    if is_first_line:
        is_first_line = False
        continue  # 跳过表头行
    
    values = row.strip().split(",")  # 去除换行符,避免干扰数据分割
    # 提取月份(日期格式为YYYY-MM-DD,split后取索引1的元素)
    month = values[0].split("-")[1]
    state = values[1].strip()  # 清理州名可能带的空格
    rainfall_str = values[6].strip()
    
    # 处理空降雨量记录(避免转换float时报错)
    if not rainfall_str:
        continue
    rainfall = float(rainfall_str)
    
    # 构建嵌套字典:先确保月份存在,再确保对应州的列表存在
    if month not in minimum_monthly_rainfall:
        minimum_monthly_rainfall[month] = {}  # 月份对应的值是一个州-降雨量列表的字典
    if state not in minimum_monthly_rainfall[month]:
        minimum_monthly_rainfall[month][state] = []
    minimum_monthly_rainfall[month][state].append(rainfall)

# 计算并输出每个州每月的最小降雨量
for month, state_data in minimum_monthly_rainfall.items():
    for state, rainfall_list in state_data.items():
        min_rain = min(rainfall_list)
        # 按你要求的格式输出,也可以添加最小值让结果更实用
        print(f"Month: {month} State: {state} Minimum Rainfall: {min_rain} mm")
    # 如果只需要你示例中的极简格式,替换为这行:
    # print(f"Month: {month} State: {state}")

关键调整说明

  • 嵌套字典设计:把原来的单层字典改成双层嵌套,实现“月份→州→降雨量列表”的层级关系,完美匹配分组需求。
  • 数据清洗:增加strip()处理换行符和空格,同时跳过空降雨量记录,避免程序崩溃。
  • 最小值计算:利用Python内置的min()函数,直接对每个州当月的降雨量列表求最小值,简洁高效。

逻辑验证(用你给出的例子)

假设NSW在1月的降雨量记录是1、10、5、7,代码会:

  1. 提取月份01、州NSW,将四个数值依次加入minimum_monthly_rainfall["01"]["NSW"]列表。
  2. 计算时调用min([1,10,5,7])得到1,最终输出Month: 01 State: NSW Minimum Rainfall: 1 mm。

内容的提问来源于stack exchange,提问作者D.Ronald

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:59:57