遍历字典 x 次

首先,我需要考虑 2 个变量: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)


繁星点点滴滴
浏览 109回答 2
2回答

至尊宝的传说

字典没有排序,所以你不能保证你的 day_of_week 键会以正确的顺序迭代。更好的方法是使用 datetime 模块和 timedelta。像这样:start = datetime.date(2019, 6, 27)duration = 3  # daysdays = [(start + datetime.timedelta(days=n)).strftime('%A') for n in range(duration)]assert days == ['Thursday', 'Friday', 'Saturday']

郎朗坤

首先,我会以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 datetimemy_week_day = datetime.datetime(2019,6,27).weekday()offer_length = 3offer_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)我只导入了 datetime 因为我不知道你的 test_case 函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python