Python collections.Counter
Python Counter is a container that hold count of objects. It is used to count items available or exist in iterables. Counts are allowed to be any integer value including zero or negative counts.
Counter is a subclass of the dictionary. It represents data as a key and value. It inherits all the methods and properties of the dictionary. It allows to perform arithmetic and set operations. It can be used with any iterable which implements iteration protocol.
Syntax
Following is the syntax of the Python Counter−
class collections.Counter([iterable-or-mapping])
Parameters
This data type accepts iterable as a parameter.
Return Value
This data type returns counter object.
Initialization of Counter
Counter is initialized by using iterables as the input value. Following are the different ways to initialize the Counter −
- With a sequence of items
- With a dictionary containing keys and counts
- With keyword arguments mapping string names to counts
Example
In the following example we have initialized the Counter in different ways −
from collections import Counter
# With sequence of items
print(Counter(['x','x','z','x','y','z','x','x','z','x']))
# with dictionary
print(Counter({'y':3, 'z':5, 'x':2}))
# with keyword arguments
print(Counter(z=3, x=5, y=2))
Following is the output of the above code −
Counter({'x': 6, 'z': 3, 'y': 1})
Counter({'z': 5, 'y': 3, 'x': 2})
Counter({'x': 5, 'z': 3, 'y': 2})
Example
Following is an basic example of the Counter in Python −
from collections import Counter
# Create a list
tuple1 = ('Python', 'Java', 'Python', 'C++', 'Python', 'Java')
# Count distinct elements and print Counter a object
print(Counter(tuple1))
Following is the output of the above code −
Counter({'Python': 3, 'Java': 2, 'C++': 1})
Counter Values
We can also access all the keys, values and items of a counter using keys(), values() and items() methods.
Example
Here, we have defined the Counter and found its key values, values and items −
from collections import Counter
#defined Counter
my_counter = Counter('xyzmnoxyzm')
#Finding key values
print(my_counter.keys())
#Finding values
print(my_counter.values())
#Finding items
print(my_counter.items())
Following is the output of the above code −
dict_keys(['x', 'y', 'z', 'm', 'n', 'o'])
dict_values([2, 2, 2, 2, 1, 1])
dict_items([('x', 2), ('y', 2), ('z', 2), ('m', 2), ('n', 1), ('o', 1)])
Methods in Counter
Following are the different methods defined in Counter() class −
| Method | Function |
|---|---|
| update() | Used to add an element or iterable into existing Counter |
| total() | Compute the sum of counts |
| most_common() | Return a list of the n most common elements and their counts from the most common to the least. If n is omitted or None, most_common() returns all elements in the counter |
| elements() | Return an iterator over elements repeating each as many times as its count. Elements are returned in the order first encountered. |
| subtract() | Elements are subtracted from an iterable or from another mapping (or counter). |
Python Counter.update() Method
The update() method in Counter class is used to add the new elements to the counter.
Example
Here, we have created an empty counter and added an elements with update() function and the Counter returns the elements with respective count −
from collections import Counter #empty counter var1 = Counter() #updated with elements var1.update([2,4,6,2,4,6,2,6]) print(var1) var1.update([2, 6, 4]) print(var1)
Following is the output of the above code −
Counter({2: 3, 6: 3, 4: 2})
Counter({2: 4, 6: 4, 4: 3})
Python Counter.subtract() Method
The subtract() method in Counter class is used to perform the subtraction operation between the two counters. The subtraction of two counters can be zero or negative value −
Example
Here, we have defined two counters, c1 and c2 and subtracted c2 from c1 −
from collections import Counter #defined counters c1 = Counter(A=4, B=3, C=10) c2 = Counter(A=10, B=3, C=4) #subtraction of c2 from cl c1.subtract(c2) print(c1)
Following is the output of the above code −
Counter({'C': 6, 'B': 0, 'A': -6})
Python Counter.total() Method
The total() method in the Counter class is used to calculate the sum of all element counts within the counter.
Example
Here, we have defined and list and converted to Counter and found the sum of all elements count −
from collections import Counter
list1 = ['a', 'b', 'c', 'a', 'b', 'c', 'a']
count = Counter(list1).total()
print("Total elements of the list :", count)
Following is the output of the above code −
Total elements of the list : 7
Python Counter.most_common() Method
The most_common() method of the Counter class in Python is used to return a list of the n most common elements in a counter. It returns the elements in descending order of their counts, from most common to least common. If the n value is not specified, it will return all elements in the counter.
Example
Following is an example of the most_common() method of Counter −
from collections import Counter
tup1 = (2,56,13,4,2,10,13,2, )
count = Counter(tup1).most_common(2)
print("Most common elements of the tuple :", count)
Following is the output of the above code −
Most common elements of the tuple : [(2, 3), (13, 2)]
python_modules.htm