Counting the frequencies in a list using dictionary in Python - GeeksforGeeks

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 functionif __name__ == "__main__":    my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]     CountFrequency(my_list)
 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 functionif __name__ == "__main__":    my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]    CountFrequency(my_list)
 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 functionif __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))
{1: 5, 5: 2, 3: 3, 4: 3, 2: 4}
 
Related Article : Count frequencies of all elements in array in Python using collections module 
deepakgupta08112000
vanshgaur14866
frequency-counting
Python dictionary-programs
python-dict
python-list
Python
python-dict
python-list
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Python Dictionary
Read a file line by line in Python
Enumerate() in Python
How to Install PIP on Windows ?
Iterate over a list in Python
Different ways to create Pandas Dataframe
Python String | replace()
Create a Pandas DataFrame from Lists
Python program to convert a list to string
Selecting rows in pandas DataFrame based on conditions