Counting the frequencies in a list using dictionary in Python
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) |
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) |
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)) |
{1: 5, 5: 2, 3: 3, 4: 3, 2: 4}
Related Article :
Count frequencies of all elements in array in Python using collections module
Please Login to comment...