Использование collections.defaultdict
:
>>> strs = "log:A 22 log:B 44 log:C 74 log:D 24 log:B 10"
>>> from collections import defaultdict
>>> dic = defaultdict(int)
>>> it = iter(strs.split())
>>> for k in it:
... dic[k] += int(next(it))
...
>>> for k,v in sorted(dic.items(), key = lambda x: x[1], reverse = True):
... print k,v
...
log:C 74
log:B 54
log:D 24
log:A 22
Чтобы получить отсортированный список элементов на основе значений:
>>> sorted(dic.items(), key = lambda x: x[1], reverse = True)
[('log:C', 74), ('log:B', 54), ('log:D', 24), ('log:A', 22)]
Update: Основываясь на новом входе
>>> mylist = [('log:A', '1009.2'), ('log:B', '938.1'), ('log:C', '925.7'), ('log:C', '925.7')]
>>> dic = defaultdict(int)
>>> for k,v in mylist:
dic[k] += float(v)
...
>>> sorted(dic.items(), key = lambda x: x[1], reverse = True)
[('log:C', 1851.4), ('log:A', 1009.2), ('log:B', 938.1)]
почему вы изменили вход? Ниже приведены три ответа на основе вашего предыдущего ввода. –
Я понял, что окончательный результат, который дал мне файл, был в списке. – user2371027
Тогда как принятый ответ решает ваш новый вход? –