首页 > 解决方案 > 如何创建一个字典,其中键是一年内的所有周数,值是一周内每个工作日的日期列表?

问题描述

我正在为日程安排创建日历。

我将如何创建一个字典,其中包含一年的周数作为键,值将是该给定周的所有日期的列表。

我想创建一个循环来实现以下目标。

1 获取一年中的每个星期。

2 获取每周的星期几并将它们转换为日期并将它们放入这样的列表中

  weekdays ['20/05/2019', '21/05/2019', '22/05/2019', '23/05/2019', 
            '24/05/2019', '25/05/2019', '26/05/2019']

3 使用 weeknumber 作为键和 weekdays 作为值,为周字典创建新键和值。

 weeks[weeknum] = weekdays

周字典的内容看起来像这样,但所有 52 周。

 weeks {22: weekdays, 23: weekdays... etc} 

我可以使用 isocalander 获得给定日期的周数和工作日,但这不足以实现我想要做的事情。

解决这个问题的最佳方法是什么?

标签: pythondatetime

解决方案


我会遍历一年中的日子,然后将它们添加到每周编号的列表中。如果您使用 defaultdict,您可以这样做,而无需为周数初始化 dict:

import datetime
from collections import defaultdict

date = datetime.date(2019, 1, 1)
enddate = datetime.date(2019, 12, 31)
days_in_each_week = defaultdict(list)

while date < enddate:
    days_in_each_week[date.isocalendar()[1]].append(date.strftime("%d/%m/%Y"))
    date += datetime.timedelta(days=1)

print(days_in_each_week)

推荐阅读