首页 > 解决方案 > 对列表的元素进行分组

问题描述

我有一个看起来像这样的列表:

old_list = [['A', 1, 2], ['A', 5, 3], ['A', 3, 2], ['B', 1, 1], ['B', 2, 5], ['C', 3 , 1], ['C', 9, 2]]

我希望我的函数对其进行迭代,因此输出是一个类似于下面的列表,每个分组项有一个元素(这里是字符串)

new_list = [[1, 2, 5, 3, 3, 2], [1, 1, 2, 5], [3, 1, 9, 2]]

标签: pythonpython-3.x

解决方案


通过itertools groupby

from itertools import groupby

result = [[j for i in k for j in i[1:]]
          for _, k in groupby(old_list, key=lambda x: x[0])]

OUTPUT

[[1, 2, 5, 3, 3, 2], [1, 1, 2, 5], [3, 1, 9, 2]]

NOTE:如果列表未排序,那么您可能需要根据第一个元素对第一个进行排序。

old_list = sorted(old_list, key= lambda x: x[0])

推荐阅读