Выражение генератора отбрасывает большое количество пар кортежей, например.в виде списка:
pairs = [(3, 47), (6, 47), (9, 47), (6, 27), (11, 27), (23, 27), (41, 27), (4, 67), (9, 67), (11, 67), (33, 67)]
Для каждой пары в парах, с ключом = пара [0] и значением = пара [1], я хочу передать этот поток пар в словарь, чтобы кумулятивно добавить значениядля соответствующих ключей.Очевидное решение:
dict_k_v = {}
for pair in pairs:
try:
dict_k_v[pair[0]] += pair[1]
except:
dict_k_v[pair[0]] = pair[1]
>>> dict_k_v
{33: 67, 3: 47, 4: 67, 6: 74, 9: 114, 11: 94, 41: 27, 23: 27}
Однако, может ли это быть достигнуто с помощью выражения генератора или некоторой аналогичной конструкции, которая не использует цикл for?
EDIT
Чтобы уточнить, выражение генератора отбрасывает большое количество пар кортежей:
(3, 47), (6, 47), (9, 47), (6, 27), (11,27), (23, 27), (41, 27), (4, 67), (9, 67), (11, 67), (33, 67) ...
и я хочунакапливать каждую пару ключ-значение в словаре (см. ответ Пола Макгуайра) по мере генерирования каждой пары.Оператор пар = список [] не нужен, и извините за это.Для каждой пары (x, y) x является целым числом, а y может быть целым числом или десятичным / с плавающей точкой.
Выражение моего генератора имеет вид:
((x,y) for y in something() for x in somethingelse())
и хочу накапливать каждую (x, y) пару в defaultdict.Hth.