Python datetime工作日数字代码 - 动态地?

时间:2016-07-28 07:28:50

标签: python datetime weekday

得到工作日没有,

import datetime
print datetime.datetime.today().weekday()

输出是一个整数,在 0 - 6 范围内,表示星期一为doc-weekday时的0

我想知道如何从Python中获取值

我希望动态创建一个字典,例如

{'Monday':0, 'Tuesday':1,...}

3 个答案:

答案 0 :(得分:4)

以下代码将创建一个带有所需值的dict 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}

答案 1 :(得分:0)

目前还不清楚你要求的是什么。如果你想要今天的星期几,以文本形式,你可以这样做:

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}

答案 2 :(得分:0)

执行此操作的简单方法是使用字典理解和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))

如果你真的想,也可以dictdatetime进行对比。例如,

from datetime import datetime, timedelta

oneday = timedelta(1)
day = datetime.today()
days = {}
for _ in range(7):
    days[day.strftime('%A')] = day.weekday()
    day += oneday

但使用日历更简单&amp;效率更高。