如何在Python中将时间戳分成5分钟间隔的桶

3

我正在使用Python在Redis中以5分钟间隔递增计数器,执行代码的速度非常重要。我将拥有一个排序集合,看起来像这样:

1:30 incr 1:35 incr ...

其中incr是该5分钟间隔内的点击数。

假设现在是下午1点32分,我想将1:30到1:35之间的所有点击放入该桶中。

天真地循环遍历列表并检查分钟是否在30到35之间,然后将其放入1:30桶中。是否有更Pythonic的方法来实现呢?


1
看一下以分钟为单位的时间表示。当与整除和/或取模结合时,这是否会导致任何结果? - user166390
我不这样认为。通常,您会循环遍历列表,并使用bucket.setdefault(minute, []).append(hit)填充一个列表字典。 - Paulo Scardine
1个回答

4
from redis import Redis

r = Redis(db=1)
r.flushdb()
def store(t):
    h, m = map(int, t.split(':'))
    m = m - m % 5
    r.zincrby('tc', '%d:%02d' % (h, m), 1)

store('1:02')
store('1:30')
store('1:32')
store('1:35')

print r.zrange('tc', 0, -1, withscores=True)

输出:

[('1:00', 1.0), ('1:35', 1.0), ('1:30', 2.0)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接