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

如何检查字典中是否存在某个日期,如果没有,则返回最近的可用日期?

如何检查字典中是否存在某个日期,如果没有,则返回最近的可用日期?

慕勒3428872 2021-12-29 18:17:31
我有一本包含许多排序日期的字典。我如何在 Python 中编写一个循环来检查某个日期是否在字典中,如果没有,它返回最接近的可用日期?我希望它可以工作,如果在日期减去一天后,它会再次检查它现在是否存在于字典中,如果不存在,它会再次减去直到找到现有日期。提前致谢from datetime import timedeltadef function(date):    if date not in dictio:        date -= timedelta(days=1)    return date
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

我做了一个递归函数来解决你的问题:


import datetime

def find_date(date, date_dict):

    if date not in date_dict.keys():

        return find_date(date-datetime.timedelta(days=1), date_dict)

    else:

        return date

我不知道你的字典的内容是什么,但下面的例子应该向你展示它是如何工作的:


import numpy as np


# creates a casual dates dictionary

months = np.random.randint(3,5,20)

days = np.random.randint(1,30,20)

dates = {

    datetime.date(2019,m,d): '{}_{:02}_{:02}'.format(2019,m,d) 

    for m,d in zip(months,days)}


# select the date to find

target_date = datetime.date(2019, np.random.randint(3,5), np.random.randint(1,30))


# print the result

print("The date I wanted: {}".format(target_date))

print("The date I got: {}".format(find_date(target_date, dates)))


查看完整回答
反对 回复 2021-12-29
?
MMTTMM

TA贡献1869条经验 获得超4个赞

您正在寻找的可能是一个 while 循环,但要小心,因为如果它找不到日期,它将运行到无限。也许您想定义一个尝试限制,直到脚本放弃?


from datetime import timedelta, date


d1 = {

    date(2019, 4, 1): None

}


def function(date, dictio):

    while date not in dictio:

        date -= timedelta(days=1)


    return date



res_date = function(date.today(), d1)

print(res_date)


查看完整回答
反对 回复 2021-12-29
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

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