在列表python中将相同的元素分组

在列表python中将相同的元素分组,python,Python,我已经使用下面的代码将第一个元素分组到一个列表中,如果它们具有相同的第二个元素。有没有更好的方法 注意:总是有两个相同的第二个元素 lst = [ [1, '200309060143'], [2, '200309060143'], [3, '200309060143'], [4, '200309060143'], [5, '200309060143'], [6, '200309060143'], [7, '20030906014

我已经使用下面的代码将第一个元素分组到一个列表中,如果它们具有相同的第二个元素。有没有更好的方法

注意:总是有两个相同的第二个元素

lst = [
    [1, '200309060143'], 
    [2, '200309060143'], 
    [3, '200309060143'], 
    [4, '200309060143'], 
    [5, '200309060143'], 
    [6, '200309060143'], 
    [7, '200309060143'],
    [8, '200309060143'],

    [1, '200309060144'], 
    [2, '200309060144'],
    [3, '200309060144'],

    [1, '200309060145'], 
    [2, '200309060145'],

    [1, '200401100047'], 
    [2, '200401100047'], 
    [3, '200401100047']
    ]

    mega_lst = []
    temp_lst = []

for i in range(len(lst)):

    if i == (len(lst)-1):

        break;      

    else:
        if lst[i][1] == lst[i + 1][1]:

            temp_lst.append(lst[i][0])          

            if i == (len(lst)-2):

                temp_lst.append(lst[len(lst)-1][0])

                mega_lst.append(temp_lst)               
        else:
            temp_lst.append(lst[i][0])

            mega_lst.append(temp_lst)

            temp_lst = []

print mega_lst
我的代码结果:[[1,2,3,4,5,6,7,8],[1,2,3],[1,2],[1,2,3]]

>>> list(list(x[1]) for x in itertools.groupby(lst, operator.itemgetter(1)))
[[[1, '200309060143'], [2, '200309060143'], [3, '200309060143'], [4, '200309060143'], [5, '200309060143'], [6, '200309060143'], [7, '200309060143'], [8, '200309060143']], [[1, '200309060144'], [2, '200309060144'], [3, '200309060144']], [[1, '200309060145'], [2, '200309060145']], [[1, '200401100047'], [2, '200401100047'], [3, '200401100047']]]
期望结果:[[1,2,3,4,5,6,7,8],[1,2,3],[1,2],[1,2,3]]

>>> list(list(x[1]) for x in itertools.groupby(lst, operator.itemgetter(1)))
[[[1, '200309060143'], [2, '200309060143'], [3, '200309060143'], [4, '200309060143'], [5, '200309060143'], [6, '200309060143'], [7, '200309060143'], [8, '200309060143']], [[1, '200309060144'], [2, '200309060144'], [3, '200309060144']], [[1, '200309060145'], [2, '200309060145']], [[1, '200401100047'], [2, '200401100047'], [3, '200401100047']]]
编辑:

如果下一步给你带来麻烦:

>>> list([y[0] for y in x[1]] for x in itertools.groupby(lst, operator.itemgetter(1)))
[[1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3], [1, 2], [1, 2, 3]]
一个合理的注释——只有当列表按您想要分组的项目排序时,这才有效,例如
[(1,'A'),(3,'b'),(2,'A')]
不会给出
[[1,2],[3]]
,而是
[[1],[2],[3]]