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

Python中是否有高效且Pythonic的方法实现星期缩写与isoweekday()返回值的转换?

最优实现方案

你现在用的多if逐行判断逻辑不仅冗余,每次匹配都要遍历所有判断条件,维护成本也高,直接用字典做映射是最高效的方案,字典查询时间复杂度为O(1),代码也更精简易读:

方案1:和原有逻辑一致返回字符串类型数值

# 先定义缩写到数值的映射字典
week_abbr_map = {
    "sun": "0",
    "mon": "1",
    "tue": "2",
    "wed": "3",
    "thu": "4",
    "fri": "5",
    "sat": "6"
}
# 直接查询即可,加lower()兼容输入大小写的情况
day = week_abbr_map[day.lower()]

如果需要兼容非法输入避免抛出KeyError,可以用get方法设置默认值:

# 非法输入默认返回"0",可根据需求修改默认值
day = week_abbr_map.get(day.lower(), "0")

方案2:直接返回整数类型(无需后续转类型)

如果后续要对数值做运算,建议直接定义值为整数的字典,减少类型转换步骤:

week_abbr_map = {
    "sun": 0,
    "mon": 1,
    "tue": 2,
    "wed": 3,
    "thu": 4,
    "fri": 5,
    "sat": 6
}
day_num = week_abbr_map[day.lower()]

补充极简写法(可读性稍差,小数据量差异不大)

如果追求代码行数最少,也可以用列表索引实现,但列表index方法是O(n)查询,效率略低于字典方案:

day = str(["sun", "mon", "tue", "wed", "thu", "fri", "sat"].index(day.lower()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:09