Python 如何根据项目的第一个字符对iterable对象中的项目进行分组?

Python 如何根据项目的第一个字符对iterable对象中的项目进行分组?,python,Python,从一个已排序的iterable对象开始,我需要按项目的第一个字符对项目进行分组(例如,从a到z的每个字母都有一个组,数字和符号也有一个组) 举个更具体的例子,假设我有以下列表: L=['aa','ab','ac','ba','bb','bc','ca','cb','cc','10','a','b',…] 我需要像这样的东西: GL=['aa','ab','ac'],['ba','bb','bc'],['ca','cb','cc'],['10','%a','b']] 这样做的选项是什么,哪一个最有

从一个已排序的iterable对象开始,我需要按项目的第一个字符对项目进行分组(例如,从a到z的每个字母都有一个组,数字和符号也有一个组)

举个更具体的例子,假设我有以下列表:

L=['aa','ab','ac','ba','bb','bc','ca','cb','cc','10','a','b',…]

我需要像这样的东西:

GL=['aa','ab','ac'],['ba','bb','bc'],['ca','cb','cc'],['10','%a','b']]

这样做的选项是什么,哪一个最有效

import itertools as it

L = ['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc', '10', '%a', ' b']

sorter = lambda x: x[0].lower() if x and x[0].isalpha() else '}'
GL = [list(v) for k, v in it.groupby(sorted(L, key=sorter), key=sorter)]
返回:

[['aa', 'ab', 'ac'],
 ['ba', 'bb', 'bc'],
 ['ca', 'cb', 'cc'],
 ['10', '%a', ' b']]

您可以使用其他方法而不是
'}'
将所有非字母字符放置在排序中的正确位置。

如果x和x[0],则可能需要
。isalpha()list@eumiro当前位置我很清楚我必须使用groupby,但其余的都有点让我不知所措。谢谢你提供了清晰的解决方案