Open In App

Python | Add the occurrence of each number as sublists

Improve
Improve
Like Article
Like
Save
Share
Report

Given a list of numbers, the task is to count the occurrence of each element and add as sublists. 

Examples:

Input: l1 = [3, 5, 7, 2, 3, 5, 9.1]
Output: [[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]

Input: l1 = [1, 1, 2, 2, 3, 1]
Output: [[1, 3], [2, 2], [3, 1]]

Note: Format output 2d list is [[‘item1’, ‘count1’], [‘item2’, ‘count2’], …, [‘itemN’, ‘countN’]]. 

Code #1: Using count() method 

python




# Python program to add the occurrence
# of each number as sublists
def count_occur(list1, **kwargs):
     
    # iterate over list item
    for i in list1:
        row =[]
        ct = 0
     
        # count function will count occurrence
        ct = list1.count(i)
        row.append(i)
        row.append(ct)
        # append 1d list items to 2d list
        list2.append(row)
     
    # below code is to eliminate
    # repetitive list items
    for j in list2:
        if j not in unq_l2:
            unq_l2.append(j)
             
    return unq_l2
 
# Driver Code
l1 = [3, 5, 7, 2, 3, 5, 9.1]
list2 = []
unq_l2 = []
print(count_occur(l1))


Output:

[[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]

  Code #2: Using loop method 

python




def count_occur(list1):
 
    for i in range(0, len(l1)):
        a = 0
        row =[]
        if i not in l:
            for j in range(0, len(l1)):
 
                # matching items from both lists
                if l1[i]== l1[j]:
 
                    # on match counter increments by 1
                    a = a + 1
 
            row.append(l1[i])
            row.append(a)
 
            # append function will append
            # 1d list items to 2d list
            l.append(row)
             
    # below code is to eliminate
    # repetitive list items   
    for j in l:
        if j not in unq_l:
            unq_l.append(j)
             
    return unq_l
 
# Driver code       
l1 =[3, 5, 7, 2, 3, 5, 9.1]
l =[]
unq_l =[]
 
print(count_occur(l1))


Output:

[[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]

Code #3: Using counter() method 

python




# Python program to add the occurrence
# of each number as sublists using counter() method
 
from collections import Counter
def count_occurence(l):
    c = Counter(l)
    l1 = []
    for k,v in c.items():
        l1.append([k,v])
    return l1
 
 
# Driver code    
l = [3, 5, 7, 2, 3, 5, 9.1]
print(count_occurence(l))


Output:

[[2, 1], [3, 2], [9.1, 1], [5, 2], [7, 1]]

 Code #4: Using set and list comprehension

You can use a set to eliminate duplicates in the input list and a list comprehension to count the occurrence of each element.

Python3




# Python program to add the occurrence
# of each number as sublists
def count_occur(l):
    unique_elements = set(l)
    return [[elem, l.count(elem)] for elem in unique_elements]
# Driver code    
 
l1 = [3, 5, 7, 2, 3, 5, 9.1]
print(count_occur(l1))


Output

[[2, 1], [3, 2], [5, 2], [7, 1], [9.1, 1]]

The time complexity of this approach is O(n^2) because it uses two nested loops. The outer loop iterates over the elements of the list, and the inner loop counts the number of occurrences of each element. The space complexity is O(n) because it creates a new list with the same number of elements as the input list.



Last Updated : 07 Jan, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads