Open In App

Python - Remove Disjoint Tuple Keys from Dictionary

Last Updated : 28 Jan, 2025
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

We are given a dictionary we need to remove the Disjoint Tuple key from it. For example we are given a dictionary d = {('a', 'b'): 1, ('c',): 2, ('d', 'e'): 3, 'f': 4} we need to remove all the disjoint tuple so that the output should be { }. We can use multiple methods like dictionary comprehension, various approaches with loops.

Using Dictionary Comprehension

Dictionary comprehension filters out non-tuple keys and keeps only tuple keys where at least one element is found in the dictionary.

Python
d = {('a', 'b'): 1, ('c',): 2, ('d', 'e'): 3, 'f': 4}

# Keep keys that are tuples and are found in the dictionary values
res = {key: value for key, value in d.items() if isinstance(key, tuple) and any(k in d for k in key)}

print(res)

Output
{}

Explanation:

  • Filters keys that are tuples using isinstance(key, tuple).
  • Keeps tuple keys if any element overlaps with the dictionary's keys or values.

Using a Loop with del

We iterate over the dictionary's keys and identify tuple keys whose elements do not overlap with other keys or values. We collect these disjoint keys and remove them from the dictionary using del.

Python
d = {('a', 'b'): 1, ('c',): 2, ('d', 'e'): 3, 'f': 4}
kr = []

# Check if the key is a tuple and disjoint
for key in d:
    if isinstance(key, tuple) and all(k not in d for k in key):
        kr.append(key)

# Remove the disjoint tuple keys
for key in kr:
    del d[key]

print(d)

Output
{'f': 4}

Explanation:

  • First loop checks if the key is a tuple and whether all its elements are not found in the dictionary, adding such disjoint keys to the kr list.
  • Second loop deletes the keys stored in kr from the dictionary using del.

Using filter()

filter() function is used to retain only those items where the key is not a tuple or the tuple has overlapping elements with dictionary lambda condition checks for tuple elements existing in the dictionary filtering out disjoint tuple keys.

Python
d = {('a', 'b'): 1, ('c',): 2, ('d', 'e'): 3, 'f': 4}

# Filter out disjoint tuple keys
res = dict(filter(lambda item: not isinstance(item[0], tuple) or any(k in d for k in item[0]), d.items()))

print(res)

Output
{'f': 4}

Explanation:

  • filter() function checks each item; if the key is not a tuple or has at least one element present in the dictionary it passes the condition.
  • dict() function is used to rebuild a dictionary from the filtered key-value pairs, excluding disjoint tuple keys.

Using Set Operations

Set operations identify the tuple keys that have overlapping elements with other keys or values in the dictionary. It creates a set of keys to keep then rebuilds the dictionary using only those keys or non-tuple keys.

Python
d = {('a', 'b'): 1, ('c',): 2, ('d', 'e'): 3, 'f': 4}
kr = {key for key in d if isinstance(key, tuple) and any(k in d for k in key)}

# Keep only keys in `keys_to_keep`
res = {key: value for key, value in d.items() if key in kr or not isinstance(key, tuple)}

print(res)

Output
{'f': 4}

Explanation:

  • A set comprehension creates kr which contains tuple keys that have at least one element overlapping with other dictionary keys or values.
  • Dictionary comprehension rebuilds the dictionary keeping only the identified tuple keys or non-tuple keys.

Next Article
Practice Tags :

Similar Reads