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

如何将这段统计星期数的列表实现代码转换为字典形式?

基于字典实现的星期几计数优化方案

没问题!我帮你把这段依赖大量elif的列表计数代码,改成更简洁易维护的字典驱动实现,而且保证输出结果和原代码完全一致。

原代码核心逻辑回顾

原代码通过一个长度为7的列表对应周一到周日的计数,用一连串elif判断每个星期几对应的索引,然后累加计数。这种方式虽然能工作,但代码冗余,新增或修改星期几的映射时很麻烦。

改进后的字典实现版本(方式一:用字典映射索引)

这种方式用字典预先定义星期几到列表索引的映射,替代冗长的elif链,代码更简洁:

def count_weekday(weekdays):
    # 定义星期几到列表索引的字典映射
    weekday_index = {
        "Mon": 0,
        "Tue": 1,
        "Wed": 2,
        "Thu": 3,
        "Fri": 4,
        "Sat": 5,
        "Sun": 6
    }
    weekdays_counter = [0] * 7
    for weekday in weekdays:
        # 通过字典直接获取索引,避免大量elif判断
        if weekday in weekday_index:
            weekdays_counter[weekday_index[weekday]] += 1
    return weekdays_counter

另一种字典实现(方式二:先统计字典再生成结果列表)

如果你更倾向于完全用字典做统计,最后再转换成原格式的列表,也可以这样写:

def count_weekday(weekdays):
    # 初始化每个星期几的计数为0
    count_dict = {
        "Mon": 0,
        "Tue": 0,
        "Wed": 0,
        "Thu": 0,
        "Fri": 0,
        "Sat": 0,
        "Sun": 0
    }
    for weekday in weekdays:
        if weekday in count_dict:
            count_dict[weekday] += 1
    # 按照Mon到Sun的顺序提取计数,生成和原代码一致的列表
    return [count_dict["Mon"], count_dict["Tue"], count_dict["Wed"],
            count_dict["Thu"], count_dict["Fri"], count_dict["Sat"], count_dict["Sun"]]

为什么这样更好?

  • 代码更简洁:去掉了7个重复的elif判断,可读性和维护性大幅提升
  • 扩展性更强:如果需要调整星期几的顺序或新增其他标识,只需要修改字典即可,不用修改循环逻辑
  • 更符合Pythonic风格:利用字典的快速查找特性,避免冗余的条件判断

测试验证

比如输入["Mon", "Tue", "Mon", "Fri", "Sun", "Sun"],两种改进后的代码都会返回[2, 1, 0, 0, 1, 0, 2],和原代码的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:17:28