gpt4 book ai didi

python - 将日期列表拆分为连续日期的子集

转载 作者:行者123 更新时间:2023-12-04 11:52:38 24 4
gpt4 key购买 nike

我有一个日期数组,其中可以包含多个日期范围。

dates = [
'2020-01-01',
'2020-01-02',
'2020-01-03',
'2020-01-06',
'2020-01-07',
'2020-01-08'
]

在此示例中,列表包含 2 个单独的连续日期范围(2020-01-01 到 2020-01-03 & 2020-01-06 到 2020-01-08)

我试图弄清楚如何遍历此列表并找到所有连续的日期范围。

我正在看的一篇文章 ( How to detect if dates are consecutive in Python? ) 似乎有一个很好的方法,但是,我正在努力在我的用例中实现这个逻辑。

最佳答案

更多 itertools 有一个函数叫 consecutive_groups 为您做到这一点:

或者您可以查看源代码并复制它的方法:

from datetime import datetime
from itertools import groupby
from operator import itemgetter

def consecutive_groups(iterable, ordering=lambda x: x):
for k, g in groupby(enumerate(iterable), key=lambda x: x[0] - ordering(x[1])):
yield map(itemgetter(1), g)
for g in consecutive_groups(dates, lambda x: datetime.strptime(x, '%Y-%m-%d').toordinal()):
print(list(g))
['2020-01-01', '2020-01-02', '2020-01-03']
['2020-01-06', '2020-01-07', '2020-01-08']

关于python - 将日期列表拆分为连续日期的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com