Python | Counter Objects | elements() (original) (raw)

**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 `

import counter class from collections module

from collections import Counter

Creation of a Counter Class object using

string as an iterable data container

x = Counter("geeksforgeeks")

printing the elements of counter object

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.

Python `

import counter class from collections module

from collections import Counter

#Creating a Counter class object using list as an iterable data container a = [12, 3, 4, 3, 5, 11, 12, 6, 7]

x = Counter(a)

#directly printing whole x print(x)

#We can also use .keys() and .values() methods to access Counter class object for i in x.keys(): print(i, ":", x[i])

#We can also make a list of keys and values of x 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 `

import counter class from collections module

from collections import Counter

Creation of a Counter Class object using

a string as an iterable data container

Example - 1

a = Counter("geeksforgeeks")

Elements of counter object

for i in a.elements(): print ( i, end = " ") print()

Example - 2

b = Counter({'geeks' : 4, 'for' : 1, 'gfg' : 2, 'python' : 3})

for i in b.elements(): print ( i, end = " ") print()

Example - 3

c = Counter([1, 2, 21, 12, 2, 44, 5, 13, 15, 5, 19, 21, 5])

for i in c.elements(): print ( i, end = " ") print()

Example - 4

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 `

import Counter from collections

from collections import Counter

creating a raw data-set

x = Counter ("geeksforgeeks")

will return a itertools chain object

which is basically a pseudo iterable container whose

elements can be used when called with a iterable tool

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 `

import Counter from collections

from collections import Counter

creating a raw data-set using keyword arguments

x = Counter (a = 2, x = 3, b = 3, z = 1, y = 5, c = 0, d = -3)

printing out the elements

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.