拿到平日沒有,Python日期時間星期幾數字代碼 - 動態?
import datetime
print datetime.datetime.today().weekday()
的輸出是一個整數,是0的範圍內 - 6表明週一0時doc-weekday
我想知道如何獲得在Python
值I希望創建一個動態詞典,例如,
{'Monday':0, 'Tuesday':1,...}
拿到平日沒有,Python日期時間星期幾數字代碼 - 動態?
import datetime
print datetime.datetime.today().weekday()
的輸出是一個整數,是0的範圍內 - 6表明週一0時doc-weekday
我想知道如何獲得在Python
值I希望創建一個動態詞典,例如,
{'Monday':0, 'Tuesday':1,...}
下面的代碼將創建一個字典d與所需的值
>>> import calendar
>>> d=dict(enumerate(calendar.day_name))
>>> d
{0: 'Monday', 1: 'Tuesday', 2: 'Wednesday', 3: 'Thursday', 4: 'Friday', 5: 'Saturday', 6: 'Sunday'}
編輯:下面由@mfripp的評論給出了一個更好的方法
>>> d=dict(zip(calendar.day_name,range(7)))
>>> d
{'Monday': 0, 'Tuesday': 1, 'Friday': 4, 'Wednesday': 2, 'Thursday': 3, 'Sunday': 6, 'Saturday': 5}
要得到一個名稱爲鍵的字典,需要反轉名稱和數字的順序:'d = dict(zip(calendar.day_name,range(7)))'或'd = {day:num for(num,day)in enumerate(calendar.day_name)}' –
目前還不清楚你問什麼。如果你想創建一個像一個你表現出了字典
import datetime
print datetime.datetime.today().strftime('%A')
,你可以做這樣的事情:如果你想在一週爲今天的一天,在文本的形式,你可以這樣做
import datetime
# make a list of seven arbitrary dates in a row
dates=[datetime.date.fromtimestamp(0) + datetime.timedelta(days=d) for d in range(7)]
# make a dictionary showing the names and numbers of the days of the week
print {d.strftime('%A'): d.weekday() for d in dates}
執行此操作的簡單方法是使用字典理解和calendar
模塊。
import calendar
days = {name: i for i, name in enumerate(calendar.day_name)}
print(days)
輸出
{'Thursday': 3, 'Friday': 4, 'Tuesday': 1, 'Monday': 0, 'Wednesday': 2, 'Saturday': 5, 'Sunday': 6}
的Python 2.6及以上沒有字典的理解,但你可以通過一臺發電機體現了dict
構造。
days = dict((name, i) for i, name in enumerate(calendar.day_name))
也有可能使這個dict
與datetime
,如果你真的想。例如,
from datetime import datetime, timedelta
oneday = timedelta(1)
day = datetime.today()
days = {}
for _ in range(7):
days[day.strftime('%A')] = day.weekday()
day += oneday
但使用日曆是簡單&更有效。
你想自動創建映射嗎? –