tda*_*tda 2 python sorting datetime list
我有一个datetime对象列表,想要找到与我指定的日期相对应的最接近的5(或6或7等)日期.
例如:
datelist
>>>> [datetime.date(2017, 3, 4), datetime.date(2017, 3, 6), datetime.date(2017, 3, 12), datetime.date(2017, 3, 27), datetime.date(2017, 3, 27), datetime.date(2017, 3, 29), datetime.date(2017, 3, 29), datetime.date(2017, 4, 2), datetime.date(2017, 4, 4)]
Run Code Online (Sandbox Code Playgroud)
如果我输入:
my_date = datetime.date(2017, 4, 2)
nearest_list = find_nearest(datelist, my_date) # Functionality I want!
print nearest_list
>>>> [datetime.date(2017, 3, 27), datetime.date(2017, 3, 29), datetime.date(2017, 3, 29), datetime.date(2017, 4, 2), datetime.date(2017, 4, 4)]
Run Code Online (Sandbox Code Playgroud)
我应该收到最近5个日期的清单.
我知道我可以找到最近的日期并在其中任意一侧取两个列表元素(因为日期列表已排序)但是当最近的日期可能是第一个或最后一个元素(即分别在之前或之后没有项目)时这很难.
您可以使用sorted自定义功能:
res = sorted(datelist, key=lambda x: abs(x-my_date))[:5]
[datetime.date(2017, 4, 2),
datetime.date(2017, 4, 4),
datetime.date(2017, 3, 29),
datetime.date(2017, 3, 29),
datetime.date(2017, 3, 27)]
Run Code Online (Sandbox Code Playgroud)