Python list_of_tuples: suma drugiej wartości każdej krotki, tylko jeśli pierwsza wartość krotki == coś
Mam listę „zaznaczonych” krotek ... gdzie każda krotka jest (tag_id, wartość) ... tak:
my_list = [(tag_A, 100), (tag_A, 200), (tag_A, 300), (tag_A, 400), (tag_B, 400), (tag_B, 600)]
Chcę zsumować wartości każdej krotki z tym samym znacznikiem ... tak, aby:
sum_of_all_values_with_tag_A() = 1000
sum_of_all_values_with_tag_B() = 1000
Nie mogę wymyślić prostego Pythonicznego sposobu na to.
sum(set(value for tag_id, value in my_list))
... zwraca sumę WSZYSTKICH wartości.
Przypuszczam, że mogę zawinąć to pętlą for lub while, tak że tylko krotki z tagiem, który chcę podsumować, zostaną dotknięte przez to wyrażenie ...? Muszę zsumować wartości związane z obydwoma tagami ..., co daje dwie różne sumy, zróżnicowane jak powyżej. Ale nie jest w stanie wytłumaczyć eleganckiej składni dla takiej rzeczy.
Dzieje się tak w ramach wcześniej istniejącej funkcji. Byłoby wspaniale robić to bez funkcji zagnieżdżania.
Wszelkie sugestie są mile widziane!