I would do this using collections.Counter :
In [2]: from collections import Counter In [3]: c = Counter() In [4]: for k, v in p: ...: c[k] += v ...: In [5]: c Out[5]: Counter({'AAPL': 0, 'RY': 57})
Then you can call the most_common method of Counter objects to get a list of tuples sorted by value in descending order.
In [5]: c.most_common() Out[5]: [('RY', 57), ('AAPL', 0)]
If you need to sort tuples by their first elements, use sorted(c.items()) :
In [6]: sorted(c.items()) Out[6]: [('AAPL', 0), ('RY', 57)]
source share