Matt O'Brien Matt O'Brien - 1 year ago 67
Python Question

Summing the contents of two collections.Counter() objects

I am working with

counters. I would like to combine two of them in a meaningful manner.

Suppose I have 2 counters, say,

Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})


Counter({'menu': 1, 'good': 1, 'bar': 3})

I am trying to end up with:

Counter({'menu': 21, 'good': 16, 'happy': 10,'bar': 8})

How can I do this?

Answer Source

All you need to do is add them:

>>> from collections import Counter
>>> a = Counter({'menu': 20, 'good': 15, 'happy': 10, 'bar': 5})
>>> b = Counter({'menu': 1, 'good': 1, 'bar': 3})
>>> a + b
Counter({'menu': 21, 'good': 16, 'happy': 10, 'bar': 8})

From the docs:

Several mathematical operations are provided for combining Counter objects to produce multisets (counters that have counts greater than zero). Addition and subtraction combine counters by adding or subtracting the counts of corresponding elements.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download