为了账号安全,请及时绑定邮箱和手机立即绑定

遍历字典 x 次

遍历字典 x 次

繁星点点滴滴 2022-06-28 16:13:56
首先,我需要考虑 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 = numprint(starting_day)
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

字典没有排序,所以你不能保证你的 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']


查看完整回答
反对 回复 2022-06-28
?
郎朗坤

TA贡献1921条经验 获得超9个赞

首先,我会以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)

我只导入了 datetime 因为我不知道你的 test_case 函数。


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信