Open In App

Python – Remove Dictionaries with Matching Values with K Key

Given two dictionary lists, remove all the dictionaries which have similar value of K key from other dictionary list.

Input : test_list = [{‘Gfg’ : 3, “is” : 3, “best” : 9}, 
{‘Gfg’ : 8, “is” : 4, “best” : 2}, 
{‘Gfg’ : 9, “is” : 2, “best” : 4}, 
{‘Gfg’ : 8, “is” : 10, “best” : 3}, 
{‘Gfg’ : 7, “is” : 1, “best” : 7}], check_list = [{‘Gfg’ : 8, “Best” : 1}, {“Best” : 2, “Gfg” : 7}], K = “Gfg” 
Output : [{‘Gfg’: 3, ‘is’: 3, ‘best’: 9}, {‘Gfg’: 9, ‘is’: 10, ‘best’: 3}] 
Explanation : All dictionaries with “Gfg”‘s value as 8 or 7 is removed.
 



Input : test_list = [{‘Gfg’ : 3, “is” : 3, “best” : 9}, 
{‘Gfg’ : 8, “is” : 4, “best” : 2}], check_list = [{‘Gfg’ : 8, “Best” : 1}, {“Best” : 2, “Gfg” : 7}], K = “Gfg” 
Output : [{‘Gfg’: 3, ‘is’: 3, ‘best’: 9}] 
Explanation : All dictionaries with “Gfg”‘s value as 8 or 7 is removed. 

Method 1: Using list comprehension + dictionary comprehension



In this, we perform tasks of getting a set of elements using dictionary comprehension, and then a new list is constructed using list comprehension by testing K key’s values absence in the constructed set of values.

The whole task is conducted in two steps, 




# Python3 code to demonstrate working of
# Remove Dictionaries with Matching Values with K Key
# Using dictionary comprehension + list comprehension
 
# initializing list
test_list = [{'Gfg': 3, "is": 3, "best": 9},
             {'Gfg': 8, "is": 4, "best": 2},
             {'Gfg': 1, "is": 2, "best": 4},
             {'Gfg': 9, "is": 10, "best": 3},
             {'Gfg': 7, "is": 1, "best": 7}]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing check dictionary list
check_list = [{'Gfg': 8, "Best": 1}, {"Best": 2, "Gfg": 7}]
 
# initializing Key
K = "Gfg"
 
# getting set of values
temp = {sub[K] for sub in check_list}
 
# checking for value occurrence in test dictionary using in
# filtering only with no matching values
res = [sub for sub in test_list if sub[K] not in temp]
 
# printing result
print("Dictionary list after removal : " + str(res))

Output:

The original list is : [{‘Gfg’: 3, ‘is’: 3, ‘best’: 9}, {‘Gfg’: 8, ‘is’: 4, ‘best’: 2}, {‘Gfg’: 1, ‘is’: 2, ‘best’: 4}, {‘Gfg’: 9, ‘is’: 10, ‘best’: 3}, {‘Gfg’: 7, ‘is’: 1, ‘best’: 7}] Dictionary list after removal : [{‘Gfg’: 3, ‘is’: 3, ‘best’: 9}, {‘Gfg’: 1, ‘is’: 2, ‘best’: 4}, {‘Gfg’: 9, ‘is’: 10, ‘best’: 3}]

Time Complexity: O(n)
Auxiliary Space: O(1)

Method 2 : Using filter() function and lambda function




# initializing list
test_list = [{'Gfg': 3, "is": 3, "best": 9},
             {'Gfg': 8, "is": 4, "best": 2},
             {'Gfg': 1, "is": 2, "best": 4},
             {'Gfg': 9, "is": 10, "best": 3},
             {'Gfg': 7, "is": 1, "best": 7}]
 
# initializing check dictionary list
check_list = [{'Gfg': 8, "Best": 1}, {"Best": 2, "Gfg": 7}]
 
# initializing Key
K = "Gfg"
 
# getting set of values
temp = {sub[K] for sub in check_list}
 
# using filter() function with lambda function
res = list(filter(lambda x: x[K] not in temp, test_list))
 
# printing result
print("Dictionary list after removal : " + str(res))

Output
Dictionary list after removal : [{'Gfg': 3, 'is': 3, 'best': 9}, {'Gfg': 1, 'is': 2, 'best': 4}, {'Gfg': 9, 'is': 10, 'best': 3}]

Time complexity: O(n), where n is the number of dictionaries in the original list, test_list.
Auxiliary space: O(m), where m is the number of dictionaries in the check_list.

Method 3: Using a for loop and a new list to store the desired output.

 Here are the steps:




# initializing list
test_list = [{'Gfg': 3, "is": 3, "best": 9},
             {'Gfg': 8, "is": 4, "best": 2},
             {'Gfg': 1, "is": 2, "best": 4},
             {'Gfg': 9, "is": 10, "best": 3},
             {'Gfg': 7, "is": 1, "best": 7}]
 
# initializing check dictionary list
check_list = [{'Gfg': 8, "Best": 1}, {"Best": 2, "Gfg": 7}]
 
# initializing Key
K = "Gfg"
 
# initializing result list
result_list = []
 
# iterating through each dictionary in test_list
for dictionary in test_list:
    # checking if K is not in any of the dictionaries in check_list
    if not any(K in d and d[K] == dictionary[K] for d in check_list):
        result_list.append(dictionary)
 
# printing result
print("Dictionary list after removal : " + str(result_list))

Output
Dictionary list after removal : [{'Gfg': 3, 'is': 3, 'best': 9}, {'Gfg': 1, 'is': 2, 'best': 4}, {'Gfg': 9, 'is': 10, 'best': 3}]

The time complexity of this method is O(n*m), where n is the length of test_list and m is the length of check_list.
The auxiliary space complexity is O(k), where k is the length of result_list.


Article Tags :