Skip to main content
 首页 » 编程设计

Python:计算行数并区分它们

2025年05月04日10lyhabc

我正在使用一个应用程序,它根据一分钟内完成某件事的次数提供定时输出,我希望手动获取输出(复制粘贴)并拥有我的程序,我希望计算有多少每分钟完成一次。

示例输出是这样的:

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 的建议。