对列表的元素进行分组

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

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]]

回答

通过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])


以上是对列表的元素进行分组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>