Python 根据缺失的日期拆分日期时间列表

标签 python python-datetime

如何根据缺失日期将缺失日期的日期时间列表拆分为列表列表?

使用下面的例子:

date_list = [
        datetime.datetime(2012,1,1,0,0,0), 
        datetime.datetime(2012,1,2,0,0,0), 
        datetime.datetime(2012,1,4,0,0,0), 
        datetime.datetime(2012,1,7,0,0,0),
        datetime.datetime(2012,1,8,0,0,0),
        ]

我这里要找的结果是

[[datetime.datetime(2012,1,1,0,0,0), datetime.datetime(2012,1,2,0,0,0)]
[datetime.datetime(2012,1,4,0,0,0)], 
[datetime.datetime(2012,1,7,0,0,0), datetime.datetime(2012,1,8,0,0,0)]]

我试过使用 groupby 但我不知道该用什么作为 key 。

[list(g) for k, g in itertools.groupby(date_list, key=lambda d: d.day)]

最佳答案

这适用于给定的示例...

>>> import datetime
>>> date_list = [
...         datetime.datetime(2012,1,1,0,0,0),
...         datetime.datetime(2012,1,2,0,0,0),
...         datetime.datetime(2012,1,4,0,0,0),
...         datetime.datetime(2012,1,7,0,0,0),
...         datetime.datetime(2012,1,8,0,0,0),
...         ]
>>> import itertools
>>> [list(g) for k, g in itertools.groupby(enumerate(date_list), key=lambda (i, x): i-x.day)]
[[(0, datetime.datetime(2012, 1, 1, 0, 0)), (1, datetime.datetime(2012, 1, 2, 0, 0))], [(2, datetime.datetime(2012, 1, 4, 0, 0))], [(3, datetime.datetime(2012, 1, 7, 0, 0)), (4, datetime.datetime(2012, 1, 8, 0, 0))]]

如果你不想要索引,这可能会更好......

>>> [[v for i, v in g] for k, g in itertools.groupby(enumerate(date_list), key=lambda (i, x): i-x.day)]
[[datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 2, 0, 0)], [datetime.datetime(2012, 1, 4, 0, 0)], [datetime.datetime(2012, 1, 7, 0, 0), datetime.datetime(2012, 1, 8, 0, 0)]]

关于Python 根据缺失的日期拆分日期时间列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306594/

相关文章:

python - 开始和结束时间到日期时间的字符串

python - 为什么 pandas.to_datetime 对于 '2014/12/31' 等非标准时间格式很慢

python - 如何为pytest设置current_user?

python - 是否有将字符串解析为对其内容的特定解释的函数?

python - 无法在 flask-sqlalchemy 中创建自引用外键

python - python date/time/datetime 对象可以有一个 bool 值 False 吗?

javascript - __hash__ 用于 JavaScript?

python - Django:根据查询集中的日期名称创建逗号分隔列表

python-3.x - 在Python Pandas中按日期范围索引

python - 在 Python 中将 datetime.timedelta 转换为 ISO 8601 持续时间?