如何在python中查找两个关闭事件(具有datetime组件)

如何在python中查找两个关闭事件(具有datetime组件),python,datetime,timedelta,Python,Datetime,Timedelta,我有一个表示事件的对象,我有很多类型的对象 我想在python中查找时间接近的事件 我能找到的最好的方法是: joined_events = [[event_a.time, event_a.description, event_b.time, event_b.description] for event_a in events_a for event_b in events_b if abs(event_a.time - event_b.time) < datetime.timedelta

我有一个表示事件的对象,我有很多类型的对象

我想在python中查找时间接近的事件

我能找到的最好的方法是:

joined_events = [[event_a.time, event_a.description, event_b.time, event_b.description] for event_a in events_a for event_b in events_b if abs(event_a.time - event_b.time) < datetime.timedelta(hours = 1)]
joined_events=[[event_a.time,event_a.description,event_b.time,event_b.description]对于events_a,对于event_b,如果abs(event_a.time-event_b.time)

但是我希望有一种更好的方法来做到这一点。

情人眼里出西施,但希望情人对你来说不那么难看:)

导入日期时间
来自itertools进口产品
delta=datetime.timedelta(小时=1)
已加入的事件=[
[a.时间,a.描述,b.时间,b.描述]
对于产品中的a,b(事件a,事件b),如果abs(a.time-b.time)
我找不到更好的解决方案,所以我写了一个:

它的主要目的是根据对象之间的关系对对象进行分组,并替换itertools.groupby函数

import datetime,random,Grouper
groups_of_dates = Grouper.groupby(list_of_dates,relation= Grouper.time_delta(hours = 3),as_iterable=False)
#Get a list of lists, grouping 
#consecutive events that are less than 3 hours apart.
要解决我遇到的问题,您可以执行以下操作:

results = [[a,b] 
         for a,b in itertools.product(events_a ,events_b)
         if Grouper.time_delta(attr="time",hours = 3)(a,b)]
对于更一般的解决方案,可以使用AND、OR和差分方法:

groups_of_dates = Grouper.groupby(list_of_dates,
                    relation= Grouper.AND(Grouper.time_delta(hours = 3),
                               Grouper.difference(3,attr="loc")),
                    as_iterable=False)

你是在问是否有更有效的方法来比较两个列表中的所有项目?我想知道是否有更好的方法来比较,这是一段丑陋的代码。
groups_of_dates = Grouper.groupby(list_of_dates,
                    relation= Grouper.AND(Grouper.time_delta(hours = 3),
                               Grouper.difference(3,attr="loc")),
                    as_iterable=False)