使用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)]
更新:新しい入力に基づく
>>> 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)]