遍历字典x次

时间:2019-10-18 15:26:19

标签: python dictionary

首先,我需要考虑两个变量: offer_duration offer_start_day 。 报价可以在一周的任何一天开始,并且持续时间是可变的(介于1到7天之间)。

我正在尝试创建要约运行一周中所有天的列表。也就是说,如果要约的开始日期是星期四并且持续3天,则我需要一个列表,其中输出以下内容:['Thursday','Friday','Saturday']。

到目前为止,我已经创建了词典:

day_of_week = {"Monday":0, "Tuesday":1, "Wednesday":2, "Thursday":3, "Friday":4, "Saturday":5, "Sunday":6}

我正在尝试从一周中的某天(即星期四)开始遍历字典,并重复offer_duration次数。我产生了以下内容,但不知道如何解决,或者使用字典解决此问题是否正确。任何帮助将不胜感激

for key, num in day_of_week.items():
    if num == test_case('2019-06-27').weekday():
        starting_day = num
print(starting_day)

2 个答案:

答案 0 :(得分:1)

字典没有顺序,因此不能保证您的day_of_week键将以正确的顺序进行迭代。更好的方法是使用datetime模块和timedelta。像这样:

start = datetime.date(2019, 6, 27)
duration = 3  # days
days = [(start + datetime.timedelta(days=n)).strftime('%A') for n in range(duration)]
assert days == ['Thursday', 'Friday', 'Saturday']

答案 1 :(得分:0)

首先,我将以这种方式启动day_of_week

day_of_week = {0: 'Monday', 1: 'Tuesday', 2: 'Wednesday', 3: 'Thursday', 4: 'Friday', 5: 'Saturday', 6: 'Sunday'}

您可以像这样从当前定义中实现:

day_of_week = {v:k for k,v in day_of_week.items()}

然后

import datetime

my_week_day = datetime.datetime(2019,6,27).weekday()
offer_length = 3

offer_days = [v for k,v in day_of_week.items() if k in [a%7 for a in range(my_week_day,my_week_day + offer_length)]]

print(offer_days)

输出: ['Thursday', 'Friday', 'Saturday']

或者您可以使用以下内容维持正确的日间订单


offer_days = []
for a in range(my_week_day,my_week_day + offer_length):
    offer_days.append(day_of_week[a%7])

print(offer_days)

我只导入了日期时间,因为我不知道您的test_case函数。