根据元组列表查找区间

2024-07-07 07:10:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下Python元组列表:

a  = [(1,2,'MARCO'),(3,4,'MARCO'),(5,6,'MARCO'),(7,8,'MARCO'),(9,11,'CARLO'),(12,13,'CARLO'),(14,15,'CARLO'),(16,17,'MARCO'),(18,19,'MARCO'),(20,21,'MARCO'),(22,23,'MARCO')]

在每个元组中,第一个元素是开始时间,第二个元素是结束时间,第三个元素是该段中活动的说话者。 什么是一个有效的方法来分组连续的间隔与同一个演讲者,有总的开始时间和总的结束时间?在

更具体地说,我想要获得的输出如下所示:

^{pr2}$

Tags: 方法元素列表间隔时间carlo元组演讲者
1条回答
网友
1楼 · 发布于 2024-07-07 07:10:55

^{} module来点手工制作的乐趣怎么样?这假设您的列表是按开始“时间”递增排序的。在

from itertools import groupby
def speaker_times(a):
    result = []
    for item in groupby(a, lambda x:x[2]):  # Group by speaker name
        values = list(item[1])              # Convert iterator to list
        result.append((min(values)[0], max(values)[1], item[0]))
    return result

结果:

^{pr2}$

相关问题 更多 >