collections.Counter(string).most_common
# arithmetic operations
c1 = Counter(a=2, b=0, c=-1)
c2 = Counter(a=1, b=-1, c=2)
c = c1 + c2  # return items having +ve count only
print(c)  # Counter({'a': 3, 'c': 1})
c = c1 - c2  # keeps only +ve count elements
print(c)  # Counter({'a': 1, 'b': 1})
c = c1 & c2  # intersection min(c1[x], c2[x])
print(c)  # Counter({'a': 1})
c = c1 | c2  # union max(c1[x], c2[x])
print(c)  # Counter({'a': 2, 'c': 2})
