Python | Count occurrence of all elements of list in a tuple

Given a tuple and a list as input, write a Python program to count the occurrences of all items of the list in the tuple.

Examples:

Input : tuple = ('a', 'a', 'c', 'b', 'd')
        list = ['a', 'b']
Output : 3 

Input : tuple = (1, 2, 3, 1, 4, 6, 7, 1, 4)
        list = [1, 4, 7]
Output : 6

 
Approach #1 : Naive Approach

The first approach is the naive approach. Use a for loop and traverse through the given list and count the occurrence of each item of tuple in a list. Finally, return the count.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to count occurrence 
# of all elements of list in a tuple
from collections import Counter
  
def countOccurrence(tup, lst):
    count = 0
    for item in tup:
        if item in lst:
            count+= 1
      
    return count 
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))

chevron_right


Output:

3

 
Approach #2 : Using Counter
From Python Collections module, import counter to solve the given problem. A Counter is a container that keeps track of how many times equivalent values are added. Having saved the resultant in ‘counts’, we use a for loop and count how many times each item in list occurs in ‘counts’ and sum it to give the final output.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to count occurrence 
# of all elements of list in a tuple
from collections import Counter
  
def countOccurrence(tup, lst):
    counts = Counter(tup)
    return sum(counts[i] for i in lst)
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))

chevron_right


Output:

3

 
Approach #3 : Using Set
Another method of solving the given problem is using set data structure. Simply convert the given list into a set, which removes all duplicates. And now, for each item of list, count its occurrence in tuple and sum them.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to count occurrence 
# of all elements of list in a tuple
  
def countOccurrence(tup, lst):
    lst = set(lst)
    return sum(1 for x in tup if x in lst)
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))

chevron_right


Output:

3

 
Approach #4 : Using Python dictionary
Get each item of tuple and its frequency as key:value pair in Python dictionary, then using a for loop, for each item of list, count its occurrence in tuple and sum them.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to count occurrence 
# of all elements of list in a tuple
  
def countOccurrence(tup, lst):
    dct = {}
    for i in tup:
        if not dct.get(i):
            dct[i] = 0
        dct[i] += 1
    return sum(dct.get(i, 0) for i in lst)
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))

chevron_right


Output:

3

 
Approach #5 : Python numpy.in1d()
Python numpy gives us a direct method to find the solution for the given problem, and that is numpy.in1d(). This method test whether each element of a 1-D array is also present in a second array. Since list is also a 1-D array, this method can be applied here.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to count occurrence 
# of all elements of list in a tuple
import numpy as np
  
def countOccurrence(tup, lst):
    return np.in1d(tup, lst).sum()
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd'
lst = ['a', 'b']
print(countOccurrence(tup, lst))

chevron_right


Output:

3


My Personal Notes arrow_drop_up


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.