我现在有一个名为items的列表。我使用items.sort()来按升序获取它们,但我需要所需的输出。在python中有什么简单而简单的方法可以做到这一点吗?

items = ['hat1', 'mat3', 'bat2', 'bat1', 'hat2', 'mat4', 'hat5', 'hat6', 'mat1']

当前O/P-
bat1, bat2, hat1, hat2, hat5, hat6, mat1, mat3, mat4

所需O/P-
bat1, bat2
hat1, hat2, hat5, hat6
mat1, mat3, mat4

最佳答案

使用itertools.groupby

from itertools import groupby

items = ['hat1', 'mat3', 'bat2', 'bat1', 'hat2', 'mat4', 'hat5', 'hat6', 'mat1']

for k, g in groupby(sorted(items), key=lambda x: x[:3]):
    print(list(g))

# ['bat1', 'bat2']
# ['hat1', 'hat2', 'hat5', 'hat6']
# ['mat1', 'mat3', 'mat4']

关于python - 模式中的排序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57387027/

10-12 22:05