Open In App

Python – Pairs with Sum equal to K in tuple list

Improve
Improve
Like Article
Like
Save
Share
Report

Sometimes, while working with data, we can have a problem in which we need to find the sum of pairs of tuple list. And specifically the sum that is equal to K. This kind of problem can be important in web development and competitive programming. Lets discuss certain ways in which this task can be performed. 

Method #1: Using loop This can be solved using loop. This is brute way in which this task is performed. In this, we iterate the list for pair summation and retain whose sum is K. 

Python3




# Python3 code to demonstrate
# Pairs with Sum equal to K in tuple list
# using loop
 
# Initializing list
test_list = [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Initializing K
K = 9
 
# Pairs with Sum equal to K in tuple list
# using loop
res = []
for ele in test_list:
    if ele[0] + ele[1] == K:
        res.append(ele)
 
# printing result
print ("List after extracting pairs equal to K : " + str(res))


Output : 

The original list is : [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
List after extracting pairs equal to K : [(4, 5), (3, 6), (1, 8)]

Time Complexity: O(n) where n is the number of elements in the list “test_list”. 
Auxiliary Space: O(n) where n is the number of elements in the list “test_list”.

Method #2: Using list comprehension This is yet another way in which this task can be performed. In this, we extract the elements in similar method as above, the difference is that we perform this task as shorthand and in one line. 

Python3




# Python3 code to demonstrate
# Pairs with Sum equal to K in tuple list
# using list comprehension
 
# Initializing list
test_list = [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Initializing K
K = 9
 
# Pairs with Sum equal to K in tuple list
# using list comprehension
res = [(ele[0], ele[1]) for ele in test_list if ele[0] + ele[1] == K]
 
# printing result
print ("List after extracting pairs equal to K : " + str(res))


Output : 

The original list is : [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
List after extracting pairs equal to K : [(4, 5), (3, 6), (1, 8)]

Time Complexity: O(n), where n is the length of the list test_list 
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list 

Method #3 : Using sum() and list() methods

Python3




# Python3 code to demonstrate
# Pairs with Sum equal to K in tuple list
# using loop
 
# Initializing list
test_list = [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# Initializing K
K = 9
 
# Pairs with Sum equal to K in tuple list
# using loop
res = []
for ele in test_list:
    if sum(list(ele)) == K:
        res.append(ele)
 
# printing result
print ("List after extracting pairs equal to K : " + str(res))


Output

The original list is : [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
List after extracting pairs equal to K : [(4, 5), (3, 6), (1, 8)]

Method #4 : Using lamda and filter() methods

Python3




# Python3 code to demonstrate
# Pairs with Sum equal to K in tuple list
# using loop
  
# Initializing list
test_list = [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Initializing K
K = 9
  
# Pairs with Sum equal to K in tuple list
# using loop
res = list(filter(lambda x: x[0] + x[1] == K, test_list))
 
# printing result
print ("List after extracting pairs equal to K : " + str(res))


Output

The original list is : [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
List after extracting pairs equal to K : [(4, 5), (3, 6), (1, 8)]

Time complexity: O(n)

Auxiliary Space: O(n)

Method 5 : Using a dictionary. 

step-by-step approach:

Initialize an empty dictionary dict_pairs.
Loop through each tuple t in the input list test_list.
Calculate the difference diff between the target sum K and the first element of the tuple t[0].
If diff is already a key in the dictionary, append the current tuple t to the list of tuples mapped to that key.
If diff is not already a key in the dictionary, add it as a key with a value of a list containing the current tuple t.
Return the values of the dictionary as the final result.

Python3




# Python3 code to demonstrate
# Pairs with Sum equal to K in tuple list
# using dictionary
 
# Initializing list
test_list = [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
 
# Initializing K
K = 9
 
# Initializing empty dictionary
dict_pairs = {}
 
# Initializing empty result list
res = []
 
# Loop through each tuple in the input list
for t in test_list:
    # Calculate the sum of the tuple
    s = sum(t)
    # If the sum is equal to K, add the tuple to the result list
    if s == K:
        res.append(t)
    # If the sum is not equal to K, add the tuple to the dictionary
    else:
        if s not in dict_pairs:
            dict_pairs[s] = []
        dict_pairs[s].append(t)
 
# Find pairs with sum equal to K in the dictionary
for key in dict_pairs:
    if K - key in dict_pairs:
        res.extend([(x, y) for x in dict_pairs[key] for y in dict_pairs[K - key]])
 
# Printing original list
print("The original list is : " + str(test_list))
 
# Printing result
print ("List after extracting pairs equal to K : " + str(res))


Output

The original list is : [(4, 5), (6, 7), (3, 6), (1, 2), (1, 8)]
List after extracting pairs equal to K : [(4, 5), (3, 6), (1, 8)]

Time complexity: O(n), where n is the number of tuples in the input list.
Auxiliary space: O(n), to store the dictionary of pairs.



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