Beware! If you want to define YOUR OWN week numbers, you could use the generator expression provided in your first question which, by the way, got an awesome answer). If you want to follow the ISO convention for week numbers, you need to be careful:
the first calendar week of a year is
that one which includes the first
Thursday of that year and [...] the
last calendar week of a calendar year
is the week immediately preceding the
first calendar week of the next
calendar year.
So, for instance, January 1st and 2nd in 2010 were NOT week one of 2010, but week 53 of 2009.
Python offers a module for finding the week number using the ISO calendar:
Example code:
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
Notice, again, how January 1st 2010 corresponds to week 53 of 2009.
Using the generator provided in the previous answer:
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 contains the dictionary you request.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…