Python | Program to count duplicates in a list of tuples - GeeksforGeeks

11 Dec, 2018
Given a list of tuples, write a Python program to check if an element of the list has duplicates. If duplicate exist, print the number of occurrence of each duplicate tuple, otherwise print “No Duplicates”.
Examples:
Input : [(‘a’, ‘e’), (‘b’, ‘x’), (‘b’, ‘x’), (‘a’, ‘e’), (‘b’, ‘x’)]Output :(‘a’, ‘e’) – 2(‘b’, ‘x’) – 3
Input : [(0, 5), (6, 9), (0, 8)]Output : No Duplicates
Let’s see the various ways we can count duplicates in a list of tuples.
Approach #1 : Naive Approach
This approach uses two loops to traverse the list elements and check if the first element and second element of each element matches any other tuple.
# Python3 code to convert tuple # into stringdef count(listOfTuple):          flag = False      # To append Duplicate elements in list    coll_list = []      coll_cnt = 0    for t in listOfTuple:                  # To check if Duplicate exist        if t in coll_list:              flag = True            continue                  else:            coll_cnt = 0            for b in listOfTuple:                if b[0] == t[0] and b[1] == t[1]:                    coll_cnt = coll_cnt + 1                          # To print count if Duplicate of element exist            if(coll_cnt > 1):                 print(t, "-", coll_cnt)            coll_list.append(t)                           if flag == False:        print("No Duplicates")  # Driver codeprint("Test Case 1:")listOfTuple = [('a', 'e'), ('b', 'x'), ('b', 'x'),                ('a', 'e'), ('b', 'x')]   count(listOfTuple)  print("Test Case 2:")listOfTuple = [(0, 5), (6, 9), (0, 8)]count(listOfTuple)
Test Case 1:
('a', 'e') - 2
('b', 'x') - 3

Test Case 2:
No Duplicates

Time complexity – O(n)2
 Approach #2 : Using Counter
Counter is a container included in the collections module. It is an unordered collection where elements and their respective count are stored as dictionary.
# Python3 code to convert tuple # into stringimport collections  def count(listOfTuple):          flag = False    val = collections.Counter(listOfTuple)    uniqueList = list(set(listOfTuple))          for i in uniqueList:        if val[i]>= 2:            flag = True            print(i, "-", val[i])                  if flag == False:        print("Duplicate doesn't exist")  # Driver codelistOfTuple = [('a', 'e'), ('b', 'x'), ('b', 'x'),                ('a', 'e'), ('b', 'x')] count(listOfTuple)
('b', 'x') - 3
('a', 'e') - 2

Time complexity – O(n) Approach #3 : Using another dict
You can make a dictionary, say count_map, and store the count of each tuple as the value.
# Python3 code to convert tuple # into stringdef count(listOfTuple):          count_map = {}    for i in listOfTuple:        count_map[i] = count_map.get(i, 0) +1    print(count_map)  # Driver codeprint("Test Case 1:")listOfTuple = [('a', 'e'), ('b', 'x'), ('b', 'x'),                ('a', 'e'), ('b', 'x')]   count(listOfTuple)
Test Case 1:
{('a', 'e'): 2, ('b', 'x'): 3}

Time complexity – O(n)
Python list-programs
Python tuple-programs
Python
Python Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
How to Install PIP on Windows ?
Enumerate() in Python
Different ways to create Pandas Dataframe
Python String | replace()
Defaultdict in Python
Python | Get dictionary keys as a list
Python | Split string into list of characters
Python | Convert a list to dictionary
How to print without newline in Python?