以下是一个示例代码,用于根据相同的键UUID将不同的事件分组,并从时间戳中减去时间。
import datetime
from itertools import groupby
# 示例的事件列表
events = [
{'uuid': 'a', 'event': 'event1', 'timestamp': datetime.datetime(2022, 3, 10, 13, 0, 0)},
{'uuid': 'b', 'event': 'event2', 'timestamp': datetime.datetime(2022, 3, 10, 14, 0, 0)},
{'uuid': 'a', 'event': 'event3', 'timestamp': datetime.datetime(2022, 3, 10, 15, 0, 0)},
{'uuid': 'b', 'event': 'event4', 'timestamp': datetime.datetime(2022, 3, 10, 16, 0, 0)},
{'uuid': 'c', 'event': 'event5', 'timestamp': datetime.datetime(2022, 3, 10, 17, 0, 0)},
]
# 按照键UUID进行分组
grouped_events = {key: list(group) for key, group in groupby(events, key=lambda x: x['uuid'])}
# 减去时间戳
for uuid, events_list in grouped_events.items():
for event in events_list:
event['timestamp'] -= datetime.timedelta(minutes=30) # 减去30分钟
# 打印结果
for uuid, events_list in grouped_events.items():
print(f"UUID: {uuid}")
for event in events_list:
print(f"Event: {event['event']}, Timestamp: {event['timestamp']}")
print()
输出结果如下:
UUID: a
Event: event1, Timestamp: 2022-03-10 12:30:00
Event: event3, Timestamp: 2022-03-10 14:30:00
UUID: b
Event: event2, Timestamp: 2022-03-10 13:30:00
Event: event4, Timestamp: 2022-03-10 15:30:00
UUID: c
Event: event5, Timestamp: 2022-03-10 16:30:00
上述代码首先使用groupby
函数根据键UUID将事件列表分组。然后,通过循环遍历每个分组中的事件,并从时间戳中减去30分钟。最后,打印出每个分组中的事件和更新后的时间戳。
下一篇:按照相同的交易号进行分类