Вы ищете itertools.groupby
.Вам необходимо указать функцию key
, которая указывает, как группировать элементы в вашем вложенном list
(в данном случае по первому элементу).В этом случае мы можем использовать itemgetter
.
В соответствии с вашими требованиями, вы хотите, чтобы каждая группа содержала только второй элемент исходных данных, поэтому itemgetter
также может помочь в этом.
from itertools import groupby
from operator import itemgetter
data = [[1, 'a'],
[1, 'b'],
[1, 'c'],
[2, 'a'],
[2, 'b'],
[3, 'c']]
result = {key: list(map(itemgetter(1), group)) for key, group in groupby(data, key=itemgetter(0))}
print(result)
Вывод:
{1: ['a', 'b', 'c'], 2: ['a', 'b'], 3: ['c']}
Обратите внимание, что сначала вы должны отсортировать входные данные, вложенные list
, если ключи уже не в порядке, в противном случае они будут разбиты на несколько групп с одним и тем же ключом.