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

Python处理学生ID生成分类字典时如何添加Other分类?

问题解决:按年份+部门分类学生ID字典生成

现有代码核心问题

  • 部门映射字典dptname定义错误,多余了未赋值的Other键,没有缺省匹配逻辑
  • 直接使用dptname[idx[3:5]]取值,当部门编码不在预设映射中时会触发KeyError,无法自动匹配到Other分类
  • 年份默认生成的是字符串类型,和示例输出的整数类型年份不一致

修复后完整代码

# 给定学生ID列表,支持替换为任意同格式ID列表
IDs = ['20201199','21121347','20141052','20341121','21241369','21272199','19241187','19101007','20101035', '21121875', '19141534', '19301552', '21141135', '21365001']

result = {}
# 仅定义存在对应关系的部门编码映射
dept_map = {'01': 'CSE', '41': 'CS', '21': 'EEE'}

for id_str in IDs:
    # 提取年份,转换为整数和示例格式对齐
    year = int('20' + id_str[:2])
    # 提取第4、5位的部门编码(索引从0开始,下标3到5左闭右开,刚好取第4、5位)
    dept_code = id_str[3:5]
    # 用字典get方法,找不到编码时默认返回Other
    dept_name = dept_map.get(dept_code, 'Other')
    
    # 年份不存在则初始化年份对应的空字典
    if year not in result:
        result[year] = {}
    # 部门不存在则初始化部门对应的空列表
    if dept_name not in result[year]:
        result[year][dept_name] = []
    # 追加当前ID到对应分类
    result[year][dept_name].append(id_str)

# 打印最终生成的字典
print(result)

关键修改说明

  • 用字典的get()方法处理部门编码匹配:第二个参数为默认返回值,当编码不在dept_map的键中时,自动返回Other,解决未知部门分类的映射需求
  • 补充了年份、部门分类的初始化逻辑,避免运行时报错
  • 年份转换为整数类型,和示例输出格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:07