Примечание : я знаю, как я могу сделать это, конечно, в явном цикле for, но я ищу решение, которое немного более читабельно.
Если возможно, я 'Я хотел бы решить эту проблему с помощью некоторых встроенных функций.В лучшем случае это что-то вроде
result = [ *groupby logic* ]
. Предполагается следующий список:
import numpy as np
np.random.seed(42)
N = 10
my_tuples = list(zip(np.random.choice(list('ABC'), size=N),
np.random.choice(range(100), size=N)))
, где my_tuples
равно
[('C', 74),
('A', 74),
('C', 87),
('C', 99),
('A', 23),
('A', 2),
('C', 21),
('B', 52),
('C', 1),
('C', 87)]
Как группироватьиндексы (целочисленное значение в индексе 1 каждого кортежа) по меткам A, B и C, используя groupby
из itertools?
Если я сделаю что-то вроде этого:
from itertools import groupby
#..
[(k,*v) for k, v in dict(groupby(my_tuples, lambda x: x[0])).items()]
Iвидите, что это дает неправильный результат.
Желаемый результат должен быть
{
'A': [74, 23, 2],
# ..
}