<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 A Counter is a container that keeps track of how many times equivalent values are added. It can be used to implement the same algorithms for which other languages commonly use bag or multiset data structures.
Initializing
Counter supports three forms of initialization. Its constructor can be called with a sequence of items, a dictionary containing keys and counts, or using keyword arguments that map string names to counts.
Step1:  An empty Counter can be constructed with no arguments and populated via the update() method
Step2:  Accessing Counts
Once a Counter is populated, its values can be retrieved using the dictionary API.
Step3:  The elements() method returns an iterator that produces all of the items known to the Counter.
Step4:  Arithmetic
Counter instances support arithmetic and set operations for aggregating results. This example shows the standard operators for creating new Counter instances, but the in-place operators +=, -=, &=, and |= are also supported.
<ASSISTANT_TASK:>
Python Code:
import collections
print(collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']))
print(collections.Counter({'a': 2, 'b': 3, 'c': 1}))
print(collections.Counter(a=2, b=3, c=1))
Explanation: A Counter is a container that keeps track of how many times equivalent values are added. It can be used to implement the same algorithms for which other languages commonly use bag or multiset data structures.
Initializing
Counter supports three forms of initialization. Its constructor can be called with a sequence of items, a dictionary containing keys and counts, or using keyword arguments that map string names to counts.
End of explanation
import collections
c = collections.Counter()
print('Initial :', c)
c.update('abcdaab')
print('Sequence:', c)
c.update({'a': 1, 'd': 5})
print('Dict    :', c)
Explanation: An empty Counter can be constructed with no arguments and populated via the update() method
End of explanation
import collections
c = collections.Counter('abcdaab')
for letter in 'abcde':
    print('{} : {}'.format(letter, c[letter]))
Explanation: Accessing Counts
Once a Counter is populated, its values can be retrieved using the dictionary API.
End of explanation
import collections
c = collections.Counter('extremely')
c['z'] = 0
print(c)
print(list(c.elements()))
Explanation: The elements() method returns an iterator that produces all of the items known to the Counter.
End of explanation
import collections
c1 = collections.Counter(['a', 'b', 'c', 'a', 'b', 'b'])
c2 = collections.Counter('alphabet')
print('C1:', c1)
print('C2:', c2)
print('\nCombined counts:')
print(c1 + c2)
print('\nSubtraction:')
print(c1 - c2)
print('\nIntersection (taking positive minimums):')
print(c1 & c2)
print('\nUnion (taking maximums):')
print(c1 | c2)
Explanation: Arithmetic
Counter instances support arithmetic and set operations for aggregating results. This example shows the standard operators for creating new Counter instances, but the in-place operators +=, -=, &=, and |= are also supported.
End of explanation
<END_TASK>