Counting the frequencies in a list

Given an unsorted list of some: elements(may or may not be integers), Find the frequency of each distinct element in the list using a dictionary.

 
Example: 
 

Counting the frequencies in a list
Explanation : Here 1 occurs 5 times, 2 
              occurs 4 times and so on...

Recommended: Please try your approach on {IDE} first, before moving on to the solution.
The problem can be solved in many ways. A simple approach would be to iterate over the list and use each distinct element of the list as a key of the dictionary and store the corresponding count of that key as values. Below is the Python code for this approach:

# Python program to count the frequency of
# elements in a list using a dictionary

def CountFrequency(my_list):

	# Creating an empty dictionary
	freq = {}
	for item in my_list:
		if (item in freq):
			freq[item] += 1
		else:
			freq[item] = 1

	for key, value in freq.items():
		print ("% d : % d"%(key, value))

# Driver function
if __name__ == "__main__":
	my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]

	CountFrequency(my_list)

Output:

 1 :  5
 2 :  4
 3 :  3
 4 :  3

 5 :  2

Time Complexity:O(N), where N is the length of the list.

Alternative way: An alternative approach can be to use the list.count() method.

# Python program to count the frequency of
# elements in a list using a dictionary

def CountFrequency(my_list):
	
	# Creating an empty dictionary
	freq = {}
	for items in my_list:
		freq[items] = my_list.count(items)
	
	for key, value in freq.items():
		print ("% d : % d"%(key, value))

# Driver function
if __name__ == "__main__":
	my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]
	CountFrequency(my_list)

Output:

 1 :  5
 2 :  4
 3 :  3
 4 :  3
 5 :  2

Time Complexity:O(N2), where N is the length of the list. The time complexity list.count() is O(N) alone, and when used inside loop it will become O(N2). 

Counting the frequencies in a list

Alternative way:An alternative approach can be to use the dict.get() method. This makes the program much more shorter and makes understand how get method is useful instead of if…else. 

# Python program to count the frequency of
# elements in a list using a dictionary

def CountFrequency(my_list):
	
# Creating an empty dictionary
count = {}
for i in [1, 1, 1, 5, 5, 3, 1, 3, 3, 1 ,4, 4, 4, 2, 2, 2, 2]:
	count[i] = count.get(i, 0) + 1
return count

# Driver function
if __name__ == "__main__":
	my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]
	print(CountFrequency(my_list))

Output:

{1: 5, 5: 2, 3: 3, 4: 3, 2: 4}

Leave a Reply