我需要在服务器日志文件上创建一个时间戳的计数字典,并将小时作为键
我不想做冗长的案例检查正则表达式和追加(它的python ..有更好的方法)
e.g。说我有一个清单:
times = ['02:49:04', '02:50:03', '03:21:23', '03:21:48', '03:24:29', '03:30:29', '03:30:30', '03:44:54', '03:50:11', '03:52:03', '03:52:06', '03:52:30', '03:52:48', '03:54:50', '03:55:21', '03:56:50', '03:57:31', '04:05:10', '04:35:59', '04:39:50', '04:41:47', '04:46:43']
我如何(以pythonic方式)产生这样的东西:
其中“0200”将保持02:00:00到02:59:59之间的值的次数
result = { "0200":2, "0300":15, "0400":5 }
答案 0 :(得分:4)
类似的东西:
from collections import Counter
counts = Counter(time[:2]+'00' for time in times)
答案 1 :(得分:1)
from collections import defaultdict
countDict = defaultdict(int)
for t in times:
countDict[t[:2]+"--"] += 1
print countDict
答案 2 :(得分:0)
如果您不想使用计数器。你可以这样做:
dict = {}
for i in times:
try:
dict[i.split(':')[0] + "00"]+=1
except KeyError:
dict[i.split(':')[0] + "00"] = 1
答案 3 :(得分:0)
这是itertools
的另一种方式。
import itertools
key = lambda x: x[:2]
result = {}
for hour, group in itertools.groupby(sorted(times, key=key), key=key):
result[hour + '00'] = len(list(group))