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

如何实现基于字典值匹配的教师代课查询功能?

教师缺勤代课匹配程序问题解决

现有字典结构

dic1={'T1':{'ID':101,'Salary':20000,'ML':15,'DL':10,'CL':12,'P1':'8th','P2':'9th','P3':'10th','FP':4},
'T2':{'ID':102,'Salary':15000,'ML':15,'DL':10,'CL':12,'P4':'10th','P5':'7th','P6':'12th','FP':2},
'T3':{'ID':103,'Salary':15000,'ML':15,'DL':10,'CL':12,'P7':'5th','P8':'10th','P2':'12th','FP':1},
'T4':{'ID':104,'Salary':15000,'ML':15,'DL':10,'CL':12,'P4':'4th','P6':'9th','P1':'10th','FP':3}}

需求说明

输入缺勤教师姓名,识别该教师所有授课时段(以P开头的字段),输出其他教师中空课时段(FP字段)与这些授课时段序号匹配的教师。例如:若T1缺勤,其授课时段为P1、P2、P3(对应序号1、2、3),需输出FP值为1的T3、FP值为2的T2、FP值为3的T4。

原代码问题分析

你写的代码存在逻辑错误:

  1. 变量k是缺勤教师所有P开头字段组成的字典,但后续遍历中拿单个键值对j和整个字典k对比,永远不可能相等,因此不会触发输出。
  2. 循环结束后的print语句只会输出最后一次循环的变量值,没有实际意义。

修正后的代码

# 定义教师字典
dic1={'T1':{'ID':101,'Salary':20000,'ML':15,'DL':10,'CL':12,'P1':'8th','P2':'9th','P3':'10th','FP':4},
'T2':{'ID':102,'Salary':15000,'ML':15,'DL':10,'CL':12,'P4':'10th','P5':'7th','P6':'12th','FP':2},
'T3':{'ID':103,'Salary':15000,'ML':15,'DL':10,'CL':12,'P7':'5th','P8':'10th','P2':'12th','FP':1},
'T4':{'ID':104,'Salary':15000,'ML':15,'DL':10,'CL':12,'P4':'4th','P6':'9th','P1':'10th','FP':3}}

a = input("Enter Teacher name: ")
# 提取缺勤教师授课时段对应的FP序号(如P1→1,P2→2)
absent_period_ids = [int(key[1:]) for key in dic1[a].keys() if key.startswith('P')]

# 遍历所有教师,筛选符合条件的代课教师
for teacher_id, teacher_info in dic1.items():
    if teacher_id == a:
        continue  # 跳过缺勤教师自身
    if teacher_info['FP'] in absent_period_ids:
        print(f"教师{teacher_id}的空课时段FP={teacher_info['FP']},可代缺勤教师的P{teacher_info['FP']}时段")

字典结构优化建议

原字典字段分散,可读性和维护性较差,建议按功能分组整理:

dic1 = {
    'T1': {
        'ID': 101,
        'Salary': 20000,
        'Leaves': {'ML': 15, 'DL': 10, 'CL': 12},
        'TeachingPeriods': {'P1': '8th', 'P2': '9th', 'P3': '10th'},
        'FreePeriod': 4
    },
    'T2': {
        'ID': 102,
        'Salary': 15000,
        'Leaves': {'ML': 15, 'DL': 10, 'CL': 12},
        'TeachingPeriods': {'P4': '10th', 'P5': '7th', 'P6': '12th'},
        'FreePeriod': 2
    },
    'T3': {
        'ID': 103,
        'Salary': 15000,
        'Leaves': {'ML': 15, 'DL': 10, 'CL': 12},
        'TeachingPeriods': {'P7': '5th', 'P8': '10th', 'P2': '12th'},
        'FreePeriod': 1
    },
    'T4': {
        'ID': 104,
        'Salary': 15000,
        'Leaves': {'ML': 15, 'DL': 10, 'CL': 12},
        'TeachingPeriods': {'P4': '4th', 'P6': '9th', 'P1': '10th'},
        'FreePeriod': 3
    }
}

优化后结构更清晰,后续提取授课时段或请假信息时,无需再筛选字段,直接通过分组键即可获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:45:30