Python list_of_tuples: сумма второго val каждого кортежа, только если первый val кортежа == что-то

У меня есть список "тегированных" кортежей ... где каждый кортеж (tag_id, value) ... вот так:

my_list = [(tag_A, 100), (tag_A, 200), (tag_A, 300), (tag_A, 400), (tag_B, 400), (tag_B, 600)]

Я хочу суммировать значения каждого кортежа с одним и тем же тегом ... так что:

sum_of_all_values_with_tag_A() = 1000

sum_of_all_values_with_tag_B() = 1000

Я не могу понять простой Pythonic способ сделать это.

sum(set(value for tag_id, value in my_list)) 

... возвращает сумму ВСЕХ значений.

Я полагаю, что могу обернуть это с помощью цикла for или while, чтобы это выражение касалось только кортежей с тегом, который я хочу суммировать ...? Мне нужно суммировать значения, связанные с обоими тегами ... в результате чего получаются две разные суммы, дифференцированные, как указано выше. Но не могу понять элегантный синтаксис для такой вещи.

Это происходит внутри уже существующей функции. Было бы здорово сделать это без вложенности функций.

Любые предложения приветствуются!

Ответы на вопрос(4)

Ваш ответ на вопрос