Skip to content
Related Articles
Open in App
Not now

Related Articles

Python | Records Intersection

Improve Article
Save Article
  • Last Updated : 31 Jan, 2023
Improve Article
Save Article

Sometimes, while working with tuples, we can have a problem in which we need similar features of two records. This type of application can come in Data Science domain. Let’s discuss certain ways in which this problem can be solved. 

Method #1 : Using set() + “&” operator This task can be performed using symmetric difference functionality offered by XOR operator over sets. The conversion to set is done by set(). 

Python3




# Python3 code to demonstrate working of
# Records Intersection
# Using set() + "&" operator
 
# initialize tuples
test_tup1 = (3, 4, 5, 6)
test_tup2 = (5, 7, 4, 10)
 
# printing original tuples
print("The original tuple 1 : " + str(test_tup1))
print("The original tuple 2 : " + str(test_tup2))
 
# Records Intersection
# Using set() + "&" operator
res = tuple(set(test_tup1) & set(test_tup2))
 
# printing result
print("The similar elements from tuples are : " + str(res))

Output : 

The original tuple 1 : (3, 4, 5, 6)
The original tuple 2 : (5, 7, 4, 10)
The similar elements from tuples are : (4, 5)

  Method #2 : Using intersection() + set() This is method similar to above method, the difference is that instead of & operator, we use inbuilt function to perform the task of filtering dissimilar elements. 

Python3




# Python3 code to demonstrate working of
# Records Intersection
# Using intersection() + set()
 
# initialize tuples
test_tup1 = (3, 4, 5, 6)
test_tup2 = (5, 7, 4, 10)
 
# printing original tuples
print("The original tuple 1 : " + str(test_tup1))
print("The original tuple 2 : " + str(test_tup2))
 
# Records Intersection
# Using intersection() + set()
res = tuple(set(test_tup1).intersection(set(test_tup2)))
 
# printing result
print("The similar elements from tuples are : " + str(res))

Output : 

The original tuple 1 : (3, 4, 5, 6)
The original tuple 2 : (5, 7, 4, 10)
The similar elements from tuples are : (4, 5)

Method #3: Using Counter

Python3




from collections import Counter
 
# initialize tuples
test_tup1 = (3, 4, 5, 6)
test_tup2 = (5, 7, 4, 10)
 
# printing original tuples
print("The original tuple 1 : " + str(test_tup1))
print("The original tuple 2 : " + str(test_tup2))
 
# Records Intersection
# Using Counter
res = tuple(x for x in test_tup1 if Counter(test_tup1)[x] == Counter(test_tup2)[x])
 
# printing result
print("The similar elements from tuples are : " + str(res))
#This code is contributed by Edula Vinay Kumar Reddy

Output

The original tuple 1 : (3, 4, 5, 6)
The original tuple 2 : (5, 7, 4, 10)
The similar elements from tuples are : (4, 5)

This approach uses the Counter class from the collections module to create a counter object for each tuple, and then uses a list comprehension to filter the elements of the first tuple that have the same count in both counter objects. It then converts the resulting list to a tuple. Time complexity is O(n) as it iterates through the first tuple once and creates two counter objects with a time complexity of O(n) each.


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!