Как создать словарь, в котором ключами являются все номера недель в году и значения в виде списков дат каждого дня недели в течение недели? - PullRequest
0 голосов
/ 25 мая 2019

Я создаю календарь для расписания.

Как мне создать словарь, содержащий номера недели в году в качестве ключа, а значение - это список всех дат дней для данной недели.

Я хочу создать цикл для достижения следующего.

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 Создайте новый ключ и значение для словаря недель, используя номер недели в качестве ключа и дни недели в качестве значения.

 weeks[weeknum] = weekdays

Содержимое словаря недель будет выглядеть так, но со всеми 52 неделями.

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

Я могу получить номер недели и день недели с заданной датой, используя isocalander, но этого будет недостаточно для достижения того, что я хочу сделать.

Как лучше всего подойти к этому?

1 Ответ

1 голос
/ 25 мая 2019

Я бы делал итерации по дням в году, а затем добавлял их в список для номера каждой недели.Если вы используете 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...