Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python 2.7对列表中的元素进行分组_Python_List - Fatal编程技术网

如何使用python 2.7对列表中的元素进行分组

如何使用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.

我有不同日期的汽车位置(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.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)对日期进行分组,并将开始日期、结束日期和汽车位置存储在其他列表中。因此,每个输出行都有一个新元素(结束日期),可能是