Skip to content
Related Articles

Related Articles

Improve Article

Counting the frequencies in a list using dictionary in Python

  • Difficulty Level : Medium
  • Last Updated : 17 Jun, 2021

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
 

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :