如何优雅地将列表中的星期缩写字符串替换为对应weekday数值
优化实现方案
通过固定映射字典+列表推导式实现,逻辑清晰、查询效率更高,完全替代原有的多分支判断写法:
# 预先定义星期缩写与对应数值的映射关系 weekday_map = { "MON": 0, "TUE": 1, "WED": 2, "THU": 3, "FRI": 4, "SAT": 5, "SUN": 6 } selected_weekdays = ["MON", "WED", "THU", "SAT"] # 与原逻辑完全对齐:不存在的非法值保留原值不处理 res = [weekday_map[day] if day in weekday_map else day for day in selected_weekdays] print(res)
运行输出:
[0, 2, 3, 5]
可选扩展写法
如果需要过滤掉非法输入,只保留合法的星期对应数值:
res = [weekday_map[day] for day in selected_weekdays if day in weekday_map]
如果追求代码极简、且无需考虑性能(仅7项映射性能差距可忽略),也可以用列表索引实现:
weekday_order = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"] res = [weekday_order.index(day) for day in selected_weekdays if day in weekday_order]
内容的提问来源于stack exchange,提问作者quadratecode
相关产品推荐
相关产品推荐

