Осторожно! Если вы хотите определить ВАШИ СОБСТВЕННЫЕ номера недель, вы можете использовать выражение генератора, предоставленное в вашем первом вопросе , который, кстати, получил отличный ответ) Если вы хотите следовать правилам ISO для номеров недель, вам нужно быть осторожным:
первая календарная неделя года
тот, который включает в себя первый
Четверг того года и [...]
последняя календарная неделя календарного года
неделя, непосредственно предшествующая
первая календарная неделя следующей
календарный год.
Так, например, 1 и 2 января 2010 года были НЕ первой неделей 2010 года , а 53-й неделей 2009 года.
Python предлагает модуль для поиска номера недели с помощью календаря ISO:
Пример кода:
h[1] >>> import datetime
h[1] >>> Jan1st = datetime.date(2010,1,1)
h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of week
h[1] >>> print Year,WeekNum,DOW
2009 53 5
Обратите внимание, опять же, как 1 января 2010 года соответствует 53-й неделе 2009 года.
Использование генератора, указанного в предыдущем ответе:
from datetime import date, timedelta
def allsundays(year):
"""This code was provided in the previous answer! It's not mine!"""
d = date(year, 1, 1) # January 1st
d += timedelta(days = 6 - d.weekday()) # First Sunday
while d.year == year:
yield d
d += timedelta(days = 7)
Dict = {}
for wn,d in enumerate(allsundays(2010)):
# This is my only contribution!
Dict[wn+1] = [(d + timedelta(days=k)).isoformat() for k in range(0,7) ]
print Dict
Dict содержит запрашиваемый вами словарь.