我目前有一个名为items的列表。我曾经items.sort()以升序获取它们,但我想要所需的输出。有没有简单但容易的方法在python中做到这一点?
items = ['hat1', 'mat3', 'bat2', 'bat1', 'hat2', 'mat4', 'hat5', 'hat6', 'mat1']
Run Code Online (Sandbox Code Playgroud)
当前O / P-
bat1, bat2, hat1, hat2, hat5, hat6, mat1, mat3, mat4
Run Code Online (Sandbox Code Playgroud)
所需的O / P-
bat1, bat2
hat1, hat2, hat5, hat6
mat1, mat3, mat4
Run Code Online (Sandbox Code Playgroud)
用途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']
Run Code Online (Sandbox Code Playgroud)