You need to enable JavaScript to run this app. Python如何用for循环映射列表至字典并对比生成患者住院时长标识
优惠活动
大模型
产品
解决方案
定价
更多

Python如何用for循环映射列表至字典并对比生成患者住院时长标识

患者住院时长分类的Python循环实现

判定规则对齐

你此前描述的判定方向存在逻辑偏差,先对齐正确的对应关系,匹配最初需求的三个分类标签:

  • 患者实际住院时长 < 同诊断的平均住院时长(即字典对应值 > 患者实际值) → 实际住院偏短,标注 too short
  • 患者实际住院时长 > 同诊断的平均住院时长(即字典对应值 < 患者实际值) → 实际住院偏长,标注 too long
  • 患者实际住院时长与同诊断平均时长完全相等 → 标注 just right

循环实现核心代码

# 初始化存储最终结果的空列表
los_result = []

# 遍历每一位患者的记录
for patient in patients:
    # 从患者记录中拆分出三个核心字段
    patient_name = patient[0]
    diag = patient[1]
    actual_stay_days = patient[2]
    
    # 从平均住院时长字典中取对应诊断的基准值
    standard_stay_days = avg_los[diag]

    # 按规则做状态判定
    if actual_stay_days < standard_stay_days:
        stay_status = "too short"
    elif actual_stay_days > standard_stay_days:
        stay_status = "too long"
    else:
        stay_status = "just right"
    
    # 将当前患者的结果加入输出列表
    los_result.append([patient_name, actual_stay_days, stay_status])

运行后的实际输出

执行循环后,los_result的内容为:

[
    ['Boal', 1.1, 'too short'],
    ['Boal', 3.3, 'too long'],
    ['Jones', 3.2, 'just right'],
    ['Ashbury', 2.0, 'too short']
]

可选容错优化

如果存在患者诊断未收录在avg_los字典中的情况,直接用字典键取值会触发KeyError,可以将取值部分替换为字典的get方法做兼容:

# 替换原代码中 standard_stay_days = avg_los[diag] 这行
standard_stay_days = avg_los.get(diag)
if standard_stay_days is None:
    stay_status = "无对应诊断的平均住院时长数据"
else:
    # 保留原有的比较判定逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 17:24:01