Counter class is a special type of object data-set provided with the collections module in Python3. Collections module provides the user with specialized container datatypes, thus, providing an alternative to Python’s general-purpose built-ins like dictionaries, lists, and tuples.
Counter is a sub-class that is used to count hashable objects. It implicitly creates a hash table of an iterable when invoked.
elements() is one of the functions of Counter class, when invoked on the Counter object will return an itertool of all the known elements in the Counter object.
Parameters : Doesn’t take any parameters
Return type : Returns an itertool for all the elements with positive count in the Counter object
Errors and Exceptions :
-> It will print garbage value when directly printed because it returns an itertool, not a specific data-container.
-> If the count of an item is already initialized in Counter object, then it will ignore the ones with zero and negative values.
Code #1: Working of elements() on a simple data container
Python3
from collections import Counter
x = Counter( "geeksforgeeks" )
for i in x.elements():
print ( i, end = " " )
|
Output:
g g e e e e k k s s f o r
We can also create Counter class object using a list as an iterable data container.
Python3
from collections import Counter
a = [ 12 , 3 , 4 , 3 , 5 , 11 , 12 , 6 , 7 ]
x = Counter(a)
print (x)
for i in x.keys():
print (i, ":" , x[i])
x_keys = list (x.keys())
x_values = list (x.values())
print (x_keys)
print (x_values)
|
Output:
Counter({12: 2, 3: 2, 4: 1, 5: 1, 11: 1, 6: 1, 7: 1})
12 : 2
3 : 2
4 : 1
5 : 1
11 : 1
6 : 1
7 : 1
[12, 3, 4, 5, 11, 6, 7]
[2, 2, 1, 1, 1, 1, 1]
Code #2: Elements on a variety of Counter Objects with different data-containers
Python3
from collections import Counter
a = Counter( "geeksforgeeks" )
for i in a.elements():
print ( i, end = " " )
print ()
b = Counter({ 'geeks' : 4 , 'for' : 1 ,
'gfg' : 2 , 'python' : 3 })
for i in b.elements():
print ( i, end = " " )
print ()
c = Counter([ 1 , 2 , 21 , 12 , 2 , 44 , 5 ,
13 , 15 , 5 , 19 , 21 , 5 ])
for i in c.elements():
print ( i, end = " " )
print ()
d = Counter( a = 2 , b = 3 , c = 6 , d = 1 , e = 5 )
for i in d.elements():
print ( i, end = " " )
|
Output:
g g e e e e k k s s f o r
geeks geeks geeks geeks for gfg gfg python python python
1 2 2 21 21 12 44 5 5 5 13 15 19
a a b b b c c c c c c d e e e e e
Code #3: To demonstrate what elements() return when it is printed directly
Python3
from collections import Counter
x = Counter ( "geeksforgeeks" )
print (x.elements())
|
Output:
itertools.chain object at 0x037209F0
Code #4: When the count of an item in Counter is initialized with negative values or zero.
Python3
from collections import Counter
x = Counter (a = 2 , x = 3 , b = 3 , z = 1 , y = 5 , c = 0 , d = - 3 )
for i in x.elements():
print ( "% s : % s" % (i, x[i]), end = "\n" )
|
Output:
a : 2
a : 2
x : 3
x : 3
x : 3
b : 3
b : 3
b : 3
z : 1
y : 5
y : 5
y : 5
y : 5
y : 5
Note: We can infer from the output that items with values less than 1 are omitted by elements().
Applications:
Counter object along with its functions are used collectively for processing huge amounts of data. We can see that Counter() creates a hash-map for the data container invoked with it which is very useful than by manual processing of elements. It is one of a very high processing and functioning tools and can even function with a wide range of data too.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!