Skip to main content
 首页 » 编程设计

python之根据关闭日期时间属性对对象列表进行分组

2025年05月04日32softidea

假设我有一个对象列表。其中每一个都有一个表示日期的字符串(可由 dateutil 解析)。我怎样才能将这些分组到列表列表中,其中每个子列表包含连续的(5 分钟内)对象?例如:

o1.time = "2016-03-01 23:25:00-08:00" 
o2.time = "2016-03-01 23:30:00-08:00" 
o3.time = "2016-03-01 23:35:00-08:00" 
o4.time = "2016-03-02 12:35:00-08:00" 
 
list1 = [o1, o2, o3, o4] 
list2 = group_by_time(list1) 

此时 list2 将是

[[o1,o2,o3],[o4]] 

似乎应该有一个使用 lambdas 或 itertools 以及 dateutil 的 python 解决方案,但我的谷歌学校让我失望。

谢谢!

请您参考如下方法:

看看groupby来自 itertools 的函数。它获取对象列表并根据关键函数对它们进行分组。您的代码可能如下所示

from dateutil.parser import parse 
from itertools import groupby 
 
def rounded_date(item): 
    d = parse(item.time) 
    # round date 
    return d 
 
grouped_items = groupby(items, keyfunc=rounded_date) 

查看此问题以了解如何舍入日期时间:How to round the minute of a datetime object python