python - 从日期时间列表中提取天、小时和秒

标签 python datetime python-itertools

我有一个很长的日期时间列表,按时间顺序排序(如果您愿意,可以单调递增)。想象一下这样的事情:

import datetime
dates=[datetime.datetime.fromtimestamp(xx) for xx in xrange(huge_number)]

与我的真实列表的区别在于,时间步长并不总是恒定的,并且秒、小时或天之间通常存在间隙。

我想要做的是让用户选择(通过 PyQt4 GUI)精确的日期时间,以及我猜测要执行的操作:

  1. 获取datetimes_list中包含的所有不同日期
  2. 针对每一天,建立一个列表,其中包含与这一天相对应的所有不同时间
  3. 对于每个小时,获取该小时对应的时刻的完整列表

当然,我可以使用一些 for/if 循环来做到这一点,但我想知道是否有一种高效且紧凑的方法来做到这一点,也许使用 itertoolsgroupby 迭代器。但如果我真的对 itertools 感到不舒服,那么如果有人有一个想法那就太好了!

最佳答案

为什么不使用字典或 OrderedDict:

import collections
d=collections.OrderedDict()
for e in dates:
    d.setdefault(e.strftime('%Y%m%d'),collections.OrderedDict()).setdefault(e.strftime('%H'), []).append(e.strftime('%H%M%S'))

或者采用不太紧凑但更具可读性的表述:

import collections
d=collections.OrderedDict()
for e in dates:
    day, hour, full_time=e.strftime('%Y%m%d'), e.strftime('%H'), e.strftime('%H%M%S')
    d.setdefault(day,collections.OrderedDict()).setdefault(hour, []).append(full_time)

这将导致任何日期选择/任何小时选择的访问时间为 O(1)

关于python - 从日期时间列表中提取天、小时和秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236561/

相关文章:

asp.net - NodaTime 转换(第 2 部分)。如何?

python - Pyspark 数据帧操作的单元测试用例

python - 类型错误 : __init__() missing 1 required positional argument: 'on_delete' (Django 2)

Python 相当于 R 的 logspace_add 函数?

python - 将变量附加到应用程序与 Flask 中的 current_app 相同吗?

作为日期时间发布的日期的 php mysql 数组

php - MySQL 时间戳 INSERT 可以,但有时会失败

python - 类似于 zip() 的内置函数,用 None 值从左边填充不等长度

python - 如何从 python 中的同一列表中获取不同长度的多种组合?

python - 带有 islice 的生成器循环中可能存在内存泄漏