Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2014 20:56:09

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Суммирование значений в списке кортежей

Здравствуйте.
Есть кортеж:

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
итд
Спасибо, что уделили моему ламерскому вопросу, своё профессиональное время.

Отредактировано paraman (Фев. 10, 2014 21:01:34)

Офлайн

#2 Фев. 10, 2014 21:15:42

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Суммирование значений в списке кортежей

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)

Офлайн

#3 Фев. 10, 2014 21:25:53

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Суммирование значений в списке кортежей

Singularity
for f,s in abcd:
c+=s
print c.most_common(10)
Блин, про такой способ совсем не подумал. Вы же уже мне указывали на этот модуль. Спасибо.

Офлайн

#4 Фев. 11, 2014 22:16:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Суммирование значений в списке кортежей

>>> 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}
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version