Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 对列表中的元素进行分组_Python_Python 3.x - Fatal编程技术网

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