如何使用python 2.7对列表中的元素进行分组
我有不同日期的汽车位置(X,Y):如何使用python 2.7对列表中的元素进行分组,python,list,Python,List,我有不同日期的汽车位置(X,Y): input =[ [21/01/2017,"carA",2053005.39445,701577.391706], [22/01/2017,"carA",2053005.39445,701577.391706], [23/01/2017,"carA",2053005.39445,701577.391706], [24/01/2017,"carA",2052759.49583,701843.
input =[
[21/01/2017,"carA",2053005.39445,701577.391706],
[22/01/2017,"carA",2053005.39445,701577.391706],
[23/01/2017,"carA",2053005.39445,701577.391706],
[24/01/2017,"carA",2052759.49583,701843.214278],
[25/01/2017,"carA",2052759.49583,701843.214278]
]
前三行的位置相同,后两行的位置也相同。我想将开始日期和结束日期存储在一个新列表中,如下所示:
output=[
[21/01/2017,23/01/2017,"carA",2053005.39445,701577.391706],
[24/01/2017,25/01/2017,"carA",2052759.49583,701843.214278]
]
如前所述,可以使用
itertools.groupby
。但您的输入必须(正确)排序,因为它只对连续的项目进行分组:
from itertools import groupby
from operator import itemgetter
output = []
for key, group in groupby(input, key=itemgetter(2, 3)):
group = list(group)
output.append([group[0][0], group[-1][0]] + group[0][1:])
output
# [['21/01/2017', '23/01/2017', 'carA', 2053005.39445, 701577.391706],
# ['24/01/2017', '25/01/2017', 'carA', 2052759.49583, 701843.214278]]
另一个提示:input
是一个内置函数,通常不建议使用同名变量
请注意,此类列表通常很难在以后处理。您可以将它们存储为
集合。命名为tuple
以提供更多上下文。看看itertools.groupby
@depperm这并不是我想要做的。我试着按汽车位置(X,Y)对日期进行分组,并将开始日期、结束日期和汽车位置存储在其他列表中。因此,每个输出行都有一个新元素(结束日期),可能是