Я собираюсь группировать похожие элементы в списке на основе первых трех символов в строке. Например:
test = ['abc_1_2', 'abc_2_2', 'hij_1_1', 'xyz_1_2', 'xyz_2_2']
Как я могу группировать элементы выше списка в группы на основе первой группировки букв (например, 'abc'
)? Ниже представлен предполагаемый вывод:
output = {1: ('abc_1_2', 'abc_2_2'), 2: ('hij_1_1',), 3: ('xyz_1_2', 'xyz_2_2')}
или
output = [['abc_1_2', 'abc_2_2'], ['hij_1_1'], ['xyz_1_2', 'xyz_2_2']]
Я попытался использовать itertools.groupby
для достижения этого без успеха:
>>> import os, itertools
>>> test = ['abc_1_2', 'abc_2_2', 'hij_1_1', 'xyz_1_2', 'xyz_2_2']
>>> [list(g) for k.split("_")[0], g in itertools.groupby(test)]
[['abc_1_2'], ['abc_2_2'], ['hij_1_1'], ['xyz_1_2'], ['xyz_2_2']]
Я просмотрел следующие сообщения без успеха:
Как объединить похожие элементы в списке. В примере группируются аналогичные элементы (например, 'house'
и 'Hose'
), используя слишком сложный для моего примера подход.
Как объединить эквивалентные элементы вместе в списке Python?. Вот где я нашел идею для понимания списка.