我有很长datetime
的按时间顺序排序的列表(如果愿意,可以单调递增)。想象一下这样的事情:
import datetime
dates=[datetime.datetime.fromtimestamp(xx) for xx in xrange(huge_number)]
与我的实际列表相比,差异在于时间步长并不总是恒定的,并且通常在几秒钟,几小时或几天之间存在间隔。
我想做的是让用户选择(通过PyQt4 GUI)精确的日期时间,而我猜想要这样做:
datetimes_list
当然,我可以使用一些for / if循环来做到这一点,但我想知道是否存在一种有效且紧凑的方式来做到这一点,也许使用itertools
andgroupby
迭代器。但是,如果我真的不满意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)访问时间
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句