Python 对列表中的元素进行分组
我有一个列表,如下所示:Python 对列表中的元素进行分组,python,python-3.x,Python,Python 3.x,我有一个列表,如下所示: old_list = [['A', 1, 2], ['A', 5, 3], ['A', 3, 2], ['B', 1, 1], ['B', 2, 5], ['C', 3 , 1], ['C', 9, 2]] 我希望我的函数对其进行迭代,这样输出就是一个类似于下面的列表,每个分组项有一个元素(这里是字符串) 您可以使用dict将具有相同键的项(如“a”和“B”)放在一起。 完成后,可以将dict.values添加到更大的列表中 >>> a = {'a'
old_list = [['A', 1, 2], ['A', 5, 3], ['A', 3, 2], ['B', 1, 1], ['B', 2, 5], ['C', 3 , 1], ['C', 9, 2]]
我希望我的函数对其进行迭代,这样输出就是一个类似于下面的列表,每个分组项有一个元素(这里是字符串)
您可以使用dict将具有相同键的项(如“a”和“B”)放在一起。 完成后,可以将dict.values添加到更大的列表中
>>> a = {'a':[1,2,3],'b':[4,5]}
>>> a.values()
dict_values([[1, 2, 3], [4, 5]])
通过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])]
输出
:
[[1, 2, 5, 3, 3, 2], [1, 1, 2, 5], [3, 1, 9, 2]]
注意
:如果列表未排序,则可能需要根据第一个元素进行第一次排序
old_list = sorted(old_list, key= lambda x: x[0])
这回答了你的问题吗?(你自己的问题-转发)是的,但它已经关闭,所以我不得不转发它否?否。页面顶部的关闭横幅上写着“添加详细信息并澄清正在解决的问题。这将帮助其他人回答问题。你可以。”之后,它将进入重新打开过程,如果合适,它将重新打开
old_list = sorted(old_list, key= lambda x: x[0])