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
相关产品推荐
相关产品推荐

