Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中获取最近的上一个日期?_Python_Datetime_Lambda - Fatal编程技术网

如何在Python中获取最近的上一个日期?

如何在Python中获取最近的上一个日期?,python,datetime,lambda,Python,Datetime,Lambda,我有一个datetime对象数组,我想找出数组中的哪个元素与给定日期最近(例如datetime.datetime(2020,11,1)) post显示如何查找最近的绝对日期。如何修改此代码,使其只返回给定日期之前的日期 例如,如果数组中包含元素datetime.datetime(2020,10,10)、datetime.datetime(2020,10,25)和datetime.datetime(2020,11,2),则应返回第二个项,因为它与datetime.datetime(2020,11,

我有一个datetime对象数组,我想找出数组中的哪个元素与给定日期最近(例如
datetime.datetime(2020,11,1)

post显示如何查找最近的绝对日期。如何修改此代码,使其只返回给定日期之前的日期


例如,如果数组中包含元素
datetime.datetime(2020,10,10)
datetime.datetime(2020,10,25)
datetime.datetime(2020,11,2)
,则应返回第二个项,因为它与
datetime.datetime(2020,11,1)
最近。可以用lambda制作这样的东西吗?还是太精细了?

因为
datetime.datetime
对象可以相互比较,所以可以使用max:

import datetime

dates = (
    datetime.datetime(2020,10,10),
    datetime.datetime(2020,10,25),
    datetime.datetime(2020,11,2)
)

date = datetime.datetime(2020,11,1)

print(max(d for d in dates if d < date))

由于可以相互比较
datetime.datetime
对象,因此可以使用max:

import datetime

dates = (
    datetime.datetime(2020,10,10),
    datetime.datetime(2020,10,25),
    datetime.datetime(2020,11,2)
)

date = datetime.datetime(2020,11,1)

print(max(d for d in dates if d < date))

您只需筛选目标日期之前的日期,并取最大值:

import datetime

dates = [datetime.datetime(2020,10,10), datetime.datetime(2020,10,25), datetime.datetime(2020,11,2)]

target = datetime.datetime(2020,11,1)

res = max(date for date in dates if date < target)

print(res)
#2020-10-25 00:00:00
然后以同样的方式继续,或者在一行中完成:

import datetime

data = [{'start': datetime.datetime(2020,10,10)}, {'start': datetime.datetime(2020,10,25)}, {'start': datetime.datetime(2020,11,2)}]
target = datetime.datetime(2020,11,1)

res = max(d['start'] for d in data if d['start'] < target)

print(res)
#2020-10-25 00:00:00
或者,在不导入itemgetter的情况下,使用lambda作为键:

res = max((d for d in data if d['start'] < target), key=lambda d: d['start'])
res=max((如果d['start']
您只需筛选目标日期之前的日期,并取最大值:

import datetime

dates = [datetime.datetime(2020,10,10), datetime.datetime(2020,10,25), datetime.datetime(2020,11,2)]

target = datetime.datetime(2020,11,1)

res = max(date for date in dates if date < target)

print(res)
#2020-10-25 00:00:00
然后以同样的方式继续,或者在一行中完成:

import datetime

data = [{'start': datetime.datetime(2020,10,10)}, {'start': datetime.datetime(2020,10,25)}, {'start': datetime.datetime(2020,11,2)}]
target = datetime.datetime(2020,11,1)

res = max(d['start'] for d in data if d['start'] < target)

print(res)
#2020-10-25 00:00:00
或者,在不导入itemgetter的情况下,使用lambda作为键:

res = max((d for d in data if d['start'] < target), key=lambda d: d['start'])
res=max((如果d['start']
太棒了!如果我有一个dict列表,例如,
[{'start':datetime.datetime(2020,10,10)},{'start':datetime.datetime(2020,10,25)},{'start':datetime.datetime(2020,10,25)},{'start':datetime.datetime(2020,11,2)}]
,我会如何使用
?很抱歉造成混乱-我实际上是指提取完整的dict,而不仅仅是日期。例如,返回
{'start':datetime.datetime(2020,10,25)}
太棒了!如果我有一个dict列表,例如,
[{'start':datetime.datetime(2020,10,10)},{'start':datetime.datetime(2020,10,25)},{'start':datetime.datetime(2020,10,25)},{'start':datetime.datetime(2020,11,2)}]
,我会如何使用
?很抱歉造成混乱-我实际上是指提取完整的dict,而不仅仅是日期。例如,要返回
{'start':datetime.datetime(2020,10,25)}
如果你真的想要一个lambda,你可以过滤:
*\uuuu,最近的=过滤器(lambda t:t
。如果你真的想要一个lambda,你可以过滤:
*\uu,最近的=过滤器(lambda t:t