Open In App

Creating Dictionary of Sets in Python

Last Updated : 08 Feb, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

The task of creating a dictionary of sets in Python involves storing multiple unique values under specific keys, ensuring efficient membership checks and eliminating duplicates. For example, given student data where “Roll-no” maps to {1, 2, 3, 4, 5} and “Aadhaar No” maps to {11, 22, 33, 44, 55}, the goal is to create dictionary of set will be {‘Roll-no’: {1, 2, 3, 4, 5}, ‘Aadhaar No’: {33, 11, 44, 22, 55}}.

Using if condition

This method explicitly checks if a key exists in the dictionary before adding values. It provides better control but requires more lines of code and is less efficient compared to defaultdict and setdefault(). It is useful when additional conditions or logic need to be applied before insertion.

Python
d = {} # initialize empty dictionary

if "Roll-no" not in d:
    d["Roll-no"] = set()
d["Roll-no"].update([1, 2, 3, 4, 5])

if "Aadhaar No" not in d:
    d["Aadhaar No"] = set()
d["Aadhaar No"].update([11, 22, 33, 44, 55])

print(d)

Output
{'Roll-no': {1, 2, 3, 4, 5}, 'Aadhaar No': {33, 11, 44, 22, 55}}

Explanation: if “Roll-no” is not in d, it is set as an empty set, then .update([1, 2, 3, 4, 5]) adds elements. The same logic applies to “Aadhaar No”, ensuring values are stored uniquely.

Using dictionary comprehension

Dictionary comprehension allows creating a dictionary with predefined keys, each mapped to an empty set. This method is useful when we know the keys beforehand but is not ideal for dynamically adding new keys later.

Python
d = {key: set() for key in ["Student Roll-no", "Student Aadhaar No"]}

d["Student Roll-no"].update([1, 2, 3, 4, 5])
d["Student Aadhaar No"].update([11, 22, 33, 44, 55])

print(d)

Output
{'Student Roll-no': {1, 2, 3, 4, 5}, 'Student Aadhaar No': {33, 11, 44, 22, 55}}

Explanation: dictionary comprehension initialize keys (“Student Roll-no” and “Student Aadhaar No”) with empty sets in a single line. Then, .update([1, 2, 3, 4, 5]) and .update([11, 22, 33, 44, 55]) efficiently add values.

Using defaultdict(set)

defaultdict from the collections module is the most efficient way to create a dictionary of sets. It automatically initializes an empty set when a new key is accessed, eliminating the need for manual key existence checks. This method is highly efficient for dynamically adding values without extra code complexity.

Python
from collections import defaultdict

d = defaultdict(set) 

d["Roll-no"] |= {1, 2, 3, 4, 5}
d["Aadhaar No"] |= {11, 22, 33, 44, 55}

print(d)

Output
defaultdict(<class 'set'>, {'Roll-no': {1, 2, 3, 4, 5}, 'Aadhaar No': {33, 22, 55, 11, 44}})

Explanation: |= operator updates sets by adding all elements from {1, 2, 3, 4, 5} to “Roll-no”, initializing it if absent. Similarly, d[“Aadhaar No”] |= {11, 22, 33, 44, 55} adds values while ensuring uniqueness, as sets automatically ignore duplicates.

Using dict.setdefault()

setdefault() initializes a key with a set only if it does not exist. It allows updating the dictionary dynamically while maintaining clean and concise code. This method is slightly less efficient than defaultdict because it requires a function call for each key update.

Python
d = {} 

d.setdefault("Roll-no", set()).update([1, 2, 3, 4, 5])
d.setdefault("Aadhaar No", set()).update([11, 22, 33, 44, 55])

print(d)

Output
{'Roll-no': {1, 2, 3, 4, 5}, 'Aadhaar No': {33, 11, 44, 22, 55}}

Explanation: setdefault() ensures that “Roll-no” is initialized as an empty set if it doesn’t exist, then .update([1, 2, 3, 4, 5]) adds elements. Similarly, d.setdefault(“Aadhaar No”, set()).update([11, 22, 33, 44, 55]) initializes and updates “Aadhaar No”.



Next Article

Similar Reads