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

Python字典转换:按区域分组对应站点ID生成新字典

代码错误原因

  • 进入循环就直接执行sites_dict[region] = [site_id],不管该区域之前是否有存储过站点ID,直接用新的单元素列表覆盖旧值,因此只会保留最后一个同区域的站点
  • 后续的if判断逻辑无效,既没有对已有列表做追加操作,也没有合理处理新区域的初始化

修改方案

方案1:原生字典实现(无需导入额外模块)

def group_sites_by_region(sites_info):
    sites_dict = {}
    for site_id, site in sites_info.items():
        city, region = site
        if region in sites_dict:
            # 区域已存在,追加当前站点ID
            sites_dict[region].append(site_id)
        else:
            # 区域不存在,初始化该区域的站点列表
            sites_dict[region] = [site_id]
    return sites_dict

测试调用示例:

sites = {
   42: ("Christchurch", "Canterbury"),
 8472: ("Timaru", "Canterbury"),
   11: ("Westport", "Westland")
}
print(group_sites_by_region(sites))
# 输出结果:{'Canterbury': [42, 8472], 'Westland': [11]}

方案2:使用collections.defaultdict简化代码

from collections import defaultdict

def group_sites_by_region(sites_info):
    sites_dict = defaultdict(list)
    for site_id, site in sites_info.items():
        _, region = site # 不需要使用城市名称时可以用下划线占位
        sites_dict[region].append(site_id)
    return dict(sites_dict) # 转换为普通字典返回,和要求格式完全匹配

内容的提问来源于stack exchange,提问作者C.C.Randall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:36:03