我正在使用一个应用程序,它根据一分钟内完成某件事的次数提供定时输出,我希望手动获取输出(复制粘贴)并拥有我的程序,我希望计算有多少每分钟完成一次。
示例输出是这样的:
13:48 An event happened.
13:48 Another event happened.
13:49 A new event happened.
13:49 A random event happened.
13:49 An event happened.
因此,程序需要了解在 13:48 发生了 2 件事,在 13:49 发生了 3 件事。我不确定信息将如何存储,但之后我需要对它们进行平均,以确定它发生的频率的平均值。抱歉这么复杂!
最佳答案
您可以只使用时间作为字典的键并将其指向事件消息列表。该值的长度将为您提供事件的数量,同时仍然让您了解特定事件本身:
>>> from pprint import pprint
>>> from collections import defaultdict
>>> events = defaultdict(list)
>>> with open('log.txt') as f:
... for line in f:
... time, message = line.strip().split(None, 1)
... events[time].append(message)
...
>>> pprint(dict(events)) # pprint handles defaultdicts poorly
{'13:48': ['An event happened.', 'Another event happened.'],
'13:49': ['A new event happened.',
'A random event happened.',
'An event happened.']}
如果你想更花哨,你可以将时间解析成一个时间对象。
编辑:考虑 Mike Graham 的建议。
关于Python:计算行数并区分它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510651/