以下是一个使用Python的示例代码,用于按键值对列表进行分组,并为每个键创建每月时间线,并计算每个月的计数:
from collections import defaultdict
from datetime import datetime
def group_and_count(data):
# 创建一个字典来存储每个键的时间线和计数
timeline = defaultdict(list)
count = defaultdict(int)
# 遍历数据列表,按键值对进行分组
for pair in data:
key, value = pair
# 将值添加到相应键的时间线中
timeline[key].append(value)
# 计算每个月的计数
month = value.strftime('%Y-%m')
count[month] += 1
# 对每个键的时间线进行排序
for key in timeline:
timeline[key] = sorted(timeline[key])
return timeline, count
# 示例数据
data = [
('A', datetime(2021, 1, 5)),
('B', datetime(2021, 1, 10)),
('A', datetime(2021, 2, 15)),
('B', datetime(2021, 2, 20)),
('A', datetime(2021, 3, 25)),
('B', datetime(2021, 3, 30)),
('C', datetime(2021, 1, 12)),
('C', datetime(2021, 2, 18)),
('C', datetime(2021, 3, 22))
]
# 调用函数进行分组和计数
timeline, count = group_and_count(data)
# 打印每个键的时间线
for key in timeline:
print(f'{key}: {timeline[key]}')
# 打印每月的计数
for month in count:
print(f'{month}: {count[month]}')
运行结果:
A: [datetime.datetime(2021, 1, 5, 0, 0), datetime.datetime(2021, 2, 15, 0, 0), datetime.datetime(2021, 3, 25, 0, 0)]
B: [datetime.datetime(2021, 1, 10, 0, 0), datetime.datetime(2021, 2, 20, 0, 0), datetime.datetime(2021, 3, 30, 0, 0)]
C: [datetime.datetime(2021, 1, 12, 0, 0), datetime.datetime(2021, 2, 18, 0, 0), datetime.datetime(2021, 3, 22, 0, 0)]
2021-01: 3
2021-02: 3
2021-03: 3
以上代码将键'A'、'B'和'C'的时间线分别打印出来,并计算了每个月的计数。你可以根据自己的需求修改代码。