How do I sum tuples in a list where the first value is the same?

python

Solution

How about this? You can read about `collections.defaultdict`.

>>> from collections import defaultdict
>>> testDict = defaultdict(int)
>>> p = [('AAPL', 50), ('AAPL', -50), ('RY', 100), ('RY', -43)]
>>> for key, val in p:
        testDict[key] += val


>>> testDict.items()
[('AAPL', 0), ('RY', 57)]

Problem

I have a list of stocks and positions as tuples. Positive for buy, negative for sell. Example: ``` p = [('AAPL', 50), ('AAPL', -50), ('RY', 100), ('RY', -43)] ``` How can I sum the positions of stocks, to get the current holdings? ``` result = [('AAPL', 0), ('RY', 57)] ```

Original source