You need to enable JavaScript to run this app. 使用BeautifulSoup爬取月度气候表格后,如何合并拆分的同类字典?
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取月度气候表格后,如何合并拆分的同类字典?

同指标字典合并实现方案

核心逻辑

当前零散输出的字典,是把同一个气候指标拆分为上下两个半年的独立条目。合并时以气候指标的字段名作为唯一匹配键,对同个指标的月份序列、数值序列做拼接即可。

代码修改步骤

  1. 在遍历所有表格的循环外层,新增聚合存储容器,用来存放合并后的结果:
    # 初始化聚合字典,键为气候指标名
    merged_result = {}
    
  2. 替换原有循环中直接打印临时字典的逻辑,新增聚合判断:
    # 替换原代码中的 print(dict_values)
    # 取当前条目的指标名,去除首尾空格避免匹配失败
    field_key = dict_values['field'][0].strip()
    if field_key not in merged_result:
        # 首次遇到该指标,存入初始数据
        merged_result[field_key] = {
            'months': dict_values['months'].copy(),
            'field': dict_values['field'],
            'values': dict_values['values'].copy()
        }
    else:
        # 已存在同指标,拼接对应月份、数值
        merged_result[field_key]['months'].extend(dict_values['months'])
        merged_result[field_key]['values'].extend(dict_values['values'])
    
  3. 所有表格遍历完成后,取出聚合结果即可得到合并好的完整数据:
    # 提取最终合并的12个月完整气候数据
    final_climate_data = list(merged_result.values())
    

效果说明

运行后输出的Average high in ºF条目会完全匹配目标格式:

{'months': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 'field': ['Average high in ºF '], 'values': [23, 27, 34, 44, 56, 63, 65, 64, 55, 40, 28, 25]}

其余气温、降水、日照、降雪类指标都会自动完成12个月数据的拼接,无需手动逐个处理。

注意:取指标名作为键时,建议去除首尾多余空格,避免网页源码里的空格差异导致同个指标被识别为两个独立条目。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 21:36:02