Skip to content
Related Articles

Related Articles

Counting the frequencies in a list using dictionary in Python

Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 17 Jun, 2021
Improve Article
Save Article

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: 
 

Input : [1, 1, 1, 5, 5, 3, 1, 3, 3, 1,
                  4, 4, 4, 2, 2, 2, 2]
Output : 1 : 5
         2 : 4
         3 : 3
         4 : 3
         5 : 2
Explanation : Here 1 occurs 5 times, 2 
              occurs 4 times and so on...

 

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




# 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




# 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). 

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




# 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}

 

Related Article : 
Count frequencies of all elements in array in Python using collections module
 


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!