该
.split("_")[0]零件应该在您作为第二个参数传递给的单参数函数内部itertools.groupby。
>>> import os, itertools>>> test = ['abc_1_2', 'abc_2_2', 'hij_1_1', 'xyz_1_2', 'xyz_2_2']>>> [list(g) for _, g in itertools.groupby(test, lambda x: x.split('_')[0])][['abc_1_2', 'abc_2_2'], ['hij_1_1'], ['xyz_1_2', 'xyz_2_2']]>>>有它在
for ...部分不做任何事情,因为结果被立即丢弃。
此外,
str.partition如果您只希望进行单个拆分,则使用起来会更有效率:
[list(g) for _, g in itertools.groupby(test, lambda x: x.partition('_')[0])]演示:
>>> from timeit import timeit>>> timeit("'hij_1_1'.split('_')")1.3149855638076913>>> timeit("'hij_1_1'.partition('_')")0.7576401470019234>>>这不是主要问题,因为这两种方法在小字符串上都非常快,但我想我会提到它。



