Найти - Пользователи
Полная версия: Суммирование значений в списке кортежей
Начало » Python для новичков » Суммирование значений в списке кортежей
1
paraman
Здравствуйте.
Есть кортеж:
abcd = [('0', 1), ('0', 2), ('0', 2), ('0', 2), ('0', 3), ('0', 3), ('1', 1), ('1', 1), ('1', 1), ('1', 1), ('1', 1), ('1', 2), ('1', 2), ('1', 3), ('2', 1), ('2', 1), ('2', 1), ('2', 1), ('2', 2), ('2', 3), ('2', 3), ('3', 1), ('3', 1), ('3', 3), ('4', 1), ('4', 2), ('5', 1), ('5', 1), ('5', 1), ('5', 1), ('6', 1), ('6', 3), ('7', 1), ('8', 1), ('8', 1), ('8', 1), ('8', 2), ('9', 1), ('9', 1), ('9', 1), ('9', 1), ('9', 1), ('D', 1), ('M', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 5), ('b', 1), ('b', 2), ('d', 1), ('d', 2), ('e', 1), ('e', 1), ('e', 1), ('e', 1), ('e', 3), ('g', 1), ('h', 1), ('i', 1), ('i', 1), ('j', 1), ('j', 1), ('k', 1), ('m', 1), ('m', 2), ('m', 4), ('n', 1), ('n', 1), ('o', 1), ('o', 2), ('q', 1), ('r', 1), ('r', 1), ('r', 1), ('r', 1), ('r', 2), ('s', 1), ('s', 1), ('s', 1), ('t', 1), ('u', 1), ('u', 1), ('u', 1), ('w', 1), ('y', 1), ('y', 1)]

Как суммировать вторые значения, если совпадают первые и в итоге получить:
0 - 13
1 - 12
итд
Спасибо, что уделили моему ламерскому вопросу, своё профессиональное время.
Singularity
abcd = [('0', 1), ('0', 2), ('0', 2), ('0', 2), ('0', 3), ('0', 3), ('1', 1), ('1', 1), ('1', 1), ('1', 1), ('1', 1), ('1', 2), ('1', 2), ('1', 3), ('2', 1), ('2', 1), ('2', 1), ('2', 1), ('2', 2), ('2', 3), ('2', 3), ('3', 1), ('3', 1), ('3', 3), ('4', 1), ('4', 2), ('5', 1), ('5', 1), ('5', 1), ('5', 1), ('6', 1), ('6', 3), ('7', 1), ('8', 1), ('8', 1), ('8', 1), ('8', 2), ('9', 1), ('9', 1), ('9', 1), ('9', 1), ('9', 1), ('D', 1), ('M', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 5), ('b', 1), ('b', 2), ('d', 1), ('d', 2), ('e', 1), ('e', 1), ('e', 1), ('e', 1), ('e', 3), ('g', 1), ('h', 1), ('i', 1), ('i', 1), ('j', 1), ('j', 1), ('k', 1), ('m', 1), ('m', 2), ('m', 4), ('n', 1), ('n', 1), ('o', 1), ('o', 2), ('q', 1), ('r', 1), ('r', 1), ('r', 1), ('r', 1), ('r', 2), ('s', 1), ('s', 1), ('s', 1), ('t', 1), ('u', 1), ('u', 1), ('u', 1), ('w', 1), ('y', 1), ('y', 1)]
from collections import Counter
for f,s in abcd:
    c[f]+=s
print c.most_common(10)
paraman
Singularity
for f,s in abcd:
c+=s
print c.most_common(10)
Блин, про такой способ совсем не подумал. Вы же уже мне указывали на этот модуль. Спасибо.
py.user.next
>>> abcd = [('0', 1), ('0', 2), ('0', 2), ('0', 2), ('0', 3), ('0', 3), ('1', 1), ('1', 1), ('1', 1), ('1', 1), ('1', 1), ('1', 2), ('1', 2), ('1', 3), ('2', 1), ('2', 1), ('2', 1), ('2', 1), ('2', 2), ('2', 3), ('2', 3), ('3', 1), ('3', 1), ('3', 3), ('4', 1), ('4', 2), ('5', 1), ('5', 1), ('5', 1), ('5', 1), ('6', 1), ('6', 3), ('7', 1), ('8', 1), ('8', 1), ('8', 1), ('8', 2), ('9', 1), ('9', 1), ('9', 1), ('9', 1), ('9', 1), ('D', 1), ('M', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 5), ('b', 1), ('b', 2), ('d', 1), ('d', 2), ('e', 1), ('e', 1), ('e', 1), ('e', 1), ('e', 3), ('g', 1), ('h', 1), ('i', 1), ('i', 1), ('j', 1), ('j', 1), ('k', 1), ('m', 1), ('m', 2), ('m', 4), ('n', 1), ('n', 1), ('o', 1), ('o', 2), ('q', 1), ('r', 1), ('r', 1), ('r', 1), ('r', 1), ('r', 2), ('s', 1), ('s', 1), ('s', 1), ('t', 1), ('u', 1), ('u', 1), ('u', 1), ('w', 1), ('y', 1), ('y', 1)]
>>> 
>>> d = {}
>>> for k, v in abcd:
...     d[k] = d.get(k, 0) + v
... 
>>> d
{'s': 3, 't': 1, 'q': 1, 'D': 1, 'u': 3, 'M': 1, 'y': 2, 'b': 3, 'r': 6, 'a': 11, 'g': 1, 'd': 3, 'e': 7, 'j': 2, 'k': 1, 'h': 1, 'i': 2, 'n': 2, 'o': 3, 'm': 7, '2': 12, '3': 5, '0': 13, '1': 12, '6': 4, '7': 1, '4': 3, '5': 4, '8': 5, '9': 5, 'w': 1}
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB