Printing is unavailable

This course is licensed for personal online viewing only.

Public preview • CL-P000000-C27-L808-D4B8F055

Home Dashboard
Chapter 49 · Python Data Types

Set and Frozenset Data Types

3,983
words
23
min read
3
tools

1. Learning Outcomes#

या chapter नंतर तुम्हाला:

  • Python मधील set म्हणजे काय ते समजेल
  • set ची गरज का पडते ते समजेल
  • set कसा तयार करायचा ते समजेल
  • duplicate values सोबत set काय करतो ते समजेल
  • unordered collection म्हणजे नेमके काय ते समजेल
  • set mutable का आहे ते समजेल
  • frozenset म्हणजे काय ते समजेल
  • frozenset कसा तयार करायचा ते समजेल
  • set आणि frozenset मधील मुख्य फरक समजेल
  • practical situation मध्ये योग्य type कसा निवडायचा ते समजेल
  • beginners कडून होणाऱ्या common mistakes ओळखता येतील

2. एका छोट्या Problem पासून सुरुवात करूया#

समजा एका training portal वर students ने निवडलेल्या skills आपल्याकडे अशा आहेत:

PYTHON
skills = ["Python", "SQL", "Python", "Java", "SQL"]

इथे Python दोन वेळा आहे.

SQL सुद्धा दोन वेळा आहे.

पण आपल्याला प्रश्न आहे:

एकूण वेगवेगळ्या skills किती आहेत?

आपल्याला duplicate entries नको आहेत.

आपल्याला फक्त:

  • Python
  • SQL
  • Java

या unique values हव्या आहेत.

अशा situation मध्ये Python मधील set खूप उपयोगी पडतो.

3. set म्हणजे काय?#

सोप्या भाषेत:

set म्हणजे unique elements ठेवणारी collection.

एका set मध्ये समान value पुन्हा पुन्हा दिली तरी ती स्वतंत्र duplicate element म्हणून ठेवली जात नाही.

उदाहरण:

PYTHON
numbers = {10, 20, 10, 30, 20}
print(numbers)

Possible output:

TEXT
{10, 20, 30}

आपण पाच values लिहिल्या होत्या.

पण unique values फक्त तीन होत्या:

  • 10
  • 20
  • 30

म्हणून set मध्ये प्रत्येक unique value एकदाच राहिली.

Key Idea

set चा मुख्य विचार असा आहे: duplicate values काढून unique elements ठेवणे.

Trainer: "10 मी तीन वेळा दिला तर?"

Python: "तुम्ही कितीही आग्रह केला तरी माझ्या set मध्ये त्या 10 साठी एकच खुर्ची आहे."

Duplicate values बाबतीत "अति तिथे माती" हे इथे अगदी लक्षात ठेवण्यासारखे आहे.

4. Definition#

English Definition

A set is an unordered, mutable collection of unique elements in Python.

मराठी अर्थ

set ही Python मधील अशी collection आहे ज्यामध्ये duplicate elements ठेवले जात नाहीत. तिच्यातील values नंतर बदलता येतात, पण त्यांच्या position वर आपण अवलंबून राहू शकत नाही.

या definition मधील तीन शब्द महत्त्वाचे आहेत:

  • unique
  • unordered
  • mutable

आता ते एकेक करून समजून घेऊया.

5. Set कसा तयार करायचा?#

Curly Braces वापरून Set तयार करणे#

Values { } मध्ये comma ने वेगळ्या लिहून set तयार करता येतो.

PYTHON
languages = {"Python", "Java", "SQL"}

print(languages)

Possible output:

TEXT
{'Python', 'Java', 'SQL'}

इथे languages हा set आहे.

आपण type तपासू शकतो:

PYTHON
languages = {"Python", "Java", "SQL"}

print(type(languages))

Expected Output#

TEXT
<class 'set'>

याचा अर्थ Python ने ही value set म्हणून तयार केली आहे.

set() वापरून Set तयार करणे#

Python मध्ये set() function वापरूनही set तयार करता येतो.

PYTHON
numbers = set([10, 20, 30])

print(numbers)

Possible output:

TEXT
{10, 20, 30}

इथे आपण आधी एक list दिली.

set() ने त्या values पासून नवीन set तयार केला.

हा pattern विशेषतः duplicate values काढण्यासाठी उपयोगी पडतो.

PYTHON
numbers = [10, 10, 20, 30, 20]

unique_numbers = set(numbers)

print(unique_numbers)

Possible output:

TEXT
{10, 20, 30}

Flow असा समजा:

Visual Diagram80%

Rendering diagram…

सुरुवातीला duplicate values असलेली collection आहे.

ती set() कडे दिली.

set() ने प्रत्येक unique value ठेवली.

Repeated values मुळे additional duplicate elements तयार झाले नाहीत.

6. Empty Set तयार करताना होणारी महत्त्वाची चूक#

नवीन learner सहज असा विचार करू शकतो:

"{10, 20} हा set आहे, मग {} म्हणजे empty set असणार."

पण Python मध्ये तसे नाही.

हे पाहा:

PYTHON
data = {}

print(type(data))

Output:

TEXT
<class 'dict'>

{} वापरल्यावर empty set तयार होत नाही.

Empty set तयार करण्यासाठी:

PYTHON
data = set()

print(type(data))

Output:

TEXT
<class 'set'>
Common Mistake

Empty set तयार करण्यासाठी {} वापरू नका. set() वापरा.

हे interview मध्येही विचारले जाऊ शकते.

7. Unique Elements म्हणजे काय?#

unique म्हणजे repeated नसलेली स्वतंत्र value.

उदाहरण:

TEXT
10, 20, 10, 30, 20

इथे:

10 repeated आहे.

20 repeated आहे.

पण unique values आहेत:

TEXT
10, 20, 30

Set तयार केल्यावर duplicate values स्वतंत्र elements म्हणून राहत नाहीत.

PYTHON
values = [10, 20, 10, 30, 20]

unique_values = set(values)

print(len(unique_values))

Expected Output#

TEXT
3

आपण original list मध्ये पाच items दिल्या.

पण set मध्ये फक्त तीन unique values राहिल्या.

म्हणून len(unique_values) ने 3 दिले.

महत्त्वाचे

set duplicate values "मोजत" नाही. समान value ची एकच unique entry ठेवतो.

Practical Example — Unique Student Cities#

समजा registration data मधून cities मिळाल्या:

PYTHON
cities = ["Pune", "Mumbai", "Pune", "Nashik", "Mumbai"]

unique_cities = set(cities)

print(len(unique_cities))

Output:

TEXT
3

Unique cities आहेत:

  • Pune
  • Mumbai
  • Nashik

अशा प्रकारे repeated data मधून unique values मिळवण्यासाठी set उपयोगी ठरतो.

8. Unordered Collection म्हणजे काय?#

हा मुद्दा नीट समजणे खूप महत्त्वाचे आहे.

set ही unordered collection आहे.

याचा अर्थ:

set मधील elements साठी list सारखी निश्चित positional order guarantee केलेली नसते.

उदाहरण:

PYTHON
languages = {"Python", "Java", "SQL"}

print(languages)

एका run मध्ये तुम्हाला असे दिसू शकते:

TEXT
{'Java', 'SQL', 'Python'}

किंवा display order वेगळी दिसू शकते.

म्हणून:

"मी आधी Python लिहिले होते, त्यामुळे ते नेहमी पहिल्याच position वर मिळेल"

असा विचार करायचा नाही.

Remember

unordered म्हणजे values अस्ताव्यस्त किंवा चुकीच्या आहेत असा अर्थ नाही. त्याचा अर्थ असा की code ने set मधील specific positional order वर अवलंबून राहू नये.

Set मध्ये Index वापरता येतो का?#

List मध्ये आपण असे करू शकतो:

PYTHON
names = ["Amit", "Neha", "Rahul"]

print(names[0])

पण set मध्ये:

PYTHON
names = {"Amit", "Neha", "Rahul"}

print(names[0])

हे valid नाही.

कारण set positional indexing देत नाही.

या code मुळे error येतो.

यातून मुख्य गोष्ट लक्षात ठेवा:

जर तुमच्या logic ला "पहिला", "दुसरा", "तिसरा" element महत्त्वाचा असेल, तर set च्या unordered nature कडे लक्ष द्या.

Trainer: "Set मधला पहिला student कोण?"

Set: "पहिला कोण? मी attendance line नाही."

ही छोटी गंमत लक्षात ठेवली तर unordered concept विसरणे कठीण जाईल.

9. Set Mutable आहे#

mutable म्हणजे object तयार झाल्यानंतर त्याच्या content मध्ये बदल करता येतो.

Python मधील normal set mutable आहे.

आपण त्यात नवीन element add करू शकतो.

PYTHON
skills = {"Python", "SQL"}

skills.add("Java")

print(skills)

Possible output:

TEXT
{'Python', 'SQL', 'Java'}

आपण सुरुवातीला दोन skills ठेवल्या होत्या.

नंतर:

PYTHON
skills.add("Java")

यामुळे existing set मध्ये Java add झाले.

Element Remove करणे#

PYTHON
skills = {"Python", "SQL", "Java"}

skills.remove("SQL")

print(skills)

Possible output:

TEXT
{'Python', 'Java'}

Set तयार झाल्यानंतर त्यातील content बदलला.

म्हणून set mutable आहे.

Key Idea

set मध्ये unique values असतात आणि set तयार झाल्यानंतर elements add किंवा remove करता येतात.

Duplicate Element Add केला तर?#

PYTHON
skills = {"Python", "SQL"}

skills.add("Python")

print(len(skills))

Output:

TEXT
2

Python आधीच set मध्ये होता.

पुन्हा Python add केल्याने दुसरा duplicate Python तयार झाला नाही.

Set चे unique-element behavior कायम राहते.

10. मग frozenset ची गरज काय?#

आता एक वेगळी situation पाहू.

समजा application मध्ये काही permissions आहेत:

TEXT
read
write

या permissions ची collection unique हवी आहे.

पण एकदा तयार झाल्यावर ती accidentally बदलली जाऊ नये अशी requirement आहे.

Normal set वापरला तर:

PYTHON
permissions = {"read", "write"}
permissions.add("delete")

Set mutable असल्यामुळे delete add होऊ शकते.

पण काही situations मध्ये आपल्याला collection "lock" करायची असते.

म्हणजे:

  • unique values हव्यात
  • पण collection नंतर बदलता कामा नये

इथे frozenset उपयोगी पडतो.

11. frozenset म्हणजे काय?#

frozenset हे set सारखेच unique elements ठेवते.

पण त्याचा मुख्य फरक असा आहे:

frozenset immutable आहे.

एकदा frozenset तयार झाला की त्यामध्ये element add किंवा remove करता येत नाही.

नावामध्येच clue आहे:

frozen म्हणजे गोठलेला किंवा fixed झालेला असा mental model ठेवू शकता.

पण technical अर्थ असा:

collection तयार झाल्यानंतर तिच्या elements मध्ये mutation करता येत नाही.

12. Definition#

English Definition

A frozenset is an immutable, unordered collection of unique elements in Python.

मराठी अर्थ

frozenset ही unique values ठेवणारी collection आहे. ती unordered असते आणि एकदा तयार झाल्यानंतर तिचे elements add किंवा remove करता येत नाहीत.

13. Frozenset कसा तयार करायचा?#

frozenset() वापरून frozenset तयार केला जातो.

PYTHON
permissions = frozenset(["read", "write"])

print(permissions)

Possible output:

TEXT
frozenset({'read', 'write'})

Type तपासूया:

PYTHON
permissions = frozenset(["read", "write"])

print(type(permissions))

Output:

TEXT
<class 'frozenset'>

Python ने object frozenset type चा तयार केला.

14. Frozenset मध्येही Duplicate Values राहतात का?#

नाही.

frozenset सुद्धा unique elements ठेवतो.

PYTHON
numbers = frozenset([10, 10, 20, 20, 30])

print(len(numbers))

Output:

TEXT
3

Unique values:

TEXT
10, 20, 30

याचा अर्थ duplicate-removal behavior बाबतीत set आणि frozenset समान आहेत.

मुख्य फरक mutability मध्ये आहे.

15. Frozenset Immutable आहे#

हे समजण्यासाठी intentionally incorrect example पाहूया.

PYTHON
permissions = frozenset(["read", "write"])

permissions.add("delete")

हा code error देतो.

कारण frozenset मध्ये add() सारखी modifying method उपलब्ध नसते.

Typical error:

TEXT
AttributeError: 'frozenset' object has no attribute 'add'

Python आपल्याला basically सांगत आहे:

"तुम्ही frozen collection बदलण्याचा प्रयत्न करत आहात."

Trainer: "एक छोटा delete add करू?"

Frozenset: "नाही. दुकान बंद झालंय."

frozenset च्या बाबतीत "शब्द दिला तो पाळला" असा mental model ठेवू शकता — तयार झाल्यानंतर collection बदलणार नाही.

16. Set आणि Frozenset मधील मुख्य फरक#

Feature set frozenset
Unique elements Yes Yes
Unordered Yes Yes
Mutable Yes No
Element add करता येतो Yes No
Element remove करता येतो Yes No
Creation {...} किंवा set() frozenset()

दोन्हीमध्ये unique elements असतात.

दोन्ही unordered आहेत.

पण:

set बदलता येतो.

frozenset बदलता येत नाही.

हा सर्वात महत्त्वाचा फरक आहे.

17. कोणता Type निवडायचा?#

साधा decision असा विचारू शकता:

Collection तयार झाल्यानंतर बदल आवश्यक आहेत का?

Visual Diagram80%

Rendering diagram…

Flow सुरुवात unique values च्या requirement पासून होते.

नंतर एक प्रश्न विचारतो:

collection modify करावी लागेल का?

जर हो:

set योग्य आहे.

जर नाही आणि values fixed ठेवायच्या असतील:

frozenset उपयोगी आहे.

Remember

Unique values हा दोघांचा common गुण आहे. Mutable की immutable हा निवड करताना मुख्य फरक आहे.

18. Practical Example — Editable Skills#

समजा user profile मधील skills बदलत राहू शकतात.

आज:

TEXT
Python
SQL

उद्या learner Java शिकला.

मग Java add करायचा आहे.

अशा situation मध्ये set योग्य आहे.

PYTHON
skills = {"Python", "SQL"}

skills.add("Java")

print(len(skills))

Output:

TEXT
3

Collection बदलण्याची आवश्यकता असल्यामुळे normal set practical आहे.

19. Practical Example — Fixed Permissions#

समजा काही predefined permissions runtime दरम्यान बदलू नयेत.

PYTHON
permissions = frozenset(["read", "write"])

या collection मध्ये duplicate values राहणार नाहीत.

आणि collection accidentally modifyही करता येणार नाही.

इथे frozenset वापरण्याचा intent स्पष्ट आहे:

ही unique collection fixed आहे.

20. Set तयार करताना आणखी एक महत्त्वाची गोष्ट#

Set च्या elements साठी Python ला त्या values स्थिरपणे identify करता आल्या पाहिजेत.

सोप्या beginner-level भाषेत सांगायचे तर:

सर्व प्रकारच्या mutable collections थेट set element म्हणून वापरता येत नाहीत.

उदाहरणार्थ हा code valid नाही:

PYTHON
data = {[1, 2], [3, 4]}

इथे list ला set element म्हणून वापरण्याचा प्रयत्न केला आहे.

Python error देतो.

आत्ता एवढे लक्षात ठेवा:

  • integers set मध्ये ठेवू शकतो
  • strings set मध्ये ठेवू शकतो
  • अनेक immutable values set मध्ये ठेवू शकतो
  • list सारखी mutable collection थेट set element म्हणून वापरता येत नाही

या chapter साठी मुख्य focus unique, unordered आणि mutable/immutable behavior वर आहे.

21. Common Beginner Mistakes#

Mistake 1: {} म्हणजे Empty Set समजणे#

Wrong:

PYTHON
data = {}

हे empty set नाही.

Correct:

PYTHON
data = set()

Mistake 2: Set ची Order Fixed समजणे#

PYTHON
languages = {"Python", "Java", "SQL"}

Display मध्ये एखादी order दिसली म्हणून त्या order वर program logic लिहू नका.

Set unordered आहे.

Mistake 3: Set मध्ये Duplicate Values राहतील असे समजणे#

PYTHON
numbers = {10, 10, 10}

या set मध्ये तीन independent 10 values नसतात.

Unique value एकच आहे.

PYTHON
print(len(numbers))

Output:

TEXT
1

Mistake 4: Frozenset Modify करण्याचा प्रयत्न करणे#

PYTHON
data = frozenset([10, 20])

data.add(30)

हा code error देईल.

frozenset immutable आहे.

Mistake 5: Unordered म्हणजे Random असे समजणे#

unordered याचा अर्थ "Python मुद्दाम values random करतो" असा नाही.

योग्य understanding अशी:

Set मध्ये positional order ची guarantee नाही आणि आपण त्या order वर rely करू नये.

22. Set आणि Frozenset समजण्यासाठी एक Mental Model#

एका club ची membership list समजा.

Rule:

एका व्यक्तीचे नाव एकदाच हवे.

Duplicate membership नको.

जर members येत-जात असतील:

set

जर final approved membership list lock केली असेल:

frozenset

यातून दोन प्रश्न लक्षात ठेवा:

  1. Values unique हव्यात का?
  2. Collection नंतर बदलायची आहे का?

यांची उत्तरे type निवडणे सोपे करतात.

23. Quick Concept Check#

समजा:

PYTHON
data = set([5, 5, 10, 15, 10])

Unique values किती?

उत्तर:Show Answer

3

कारण:

TEXT
5
10
15

इतक्याच distinct values आहेत.

आता:

PYTHON
data = frozenset([5, 10, 15])

यामध्ये 20 add करता येईल का?

नाही.

कारण frozenset immutable आहे.

24. Interview Preparation#

What is a set in Python?Show Answer

A set is an unordered and mutable collection of unique elements. Duplicate values are not stored as separate elements, and the collection can be modified after creation.

Key Points:

  • Stores unique elements
  • Unordered collection
  • Mutable
  • Does not support positional indexing

Why interviewer asks this:

Interviewer wants to check whether you understand the basic characteristics of Python collections and can distinguish a set from ordered collection types.

What is the difference between set and frozenset in Python?Show Answer

Both set and frozenset store unique unordered elements. The main difference is mutability. A set is mutable and can be modified after creation, while a frozenset is immutable and cannot be modified after creation.

Key Points:

  • Both store unique elements
  • Both are unordered
  • set is mutable
  • frozenset is immutable

Why interviewer asks this:

The interviewer wants to verify whether you understand when a modifiable collection should be used and when an immutable collection is more appropriate.

How do you create an empty set in Python?Show Answer

An empty set is created using set().

PYTHON
data = set()

Empty curly braces {} do not create a set.

Key Points:

  • Use set()
  • {} is not an empty set

Why interviewer asks this:

It is a common beginner mistake and tests whether you know Python's collection syntax correctly.

Does a Python set maintain insertion order for positional access?Show Answer

A set should be treated as an unordered collection. Its elements do not have reliable positional indexes, so code should not depend on a particular element order.

Key Points:

  • No positional indexing
  • Do not rely on display order
  • Set should be treated as unordered

Why interviewer asks this:

The interviewer wants to ensure that you do not write logic that incorrectly depends on set ordering.

25. Hands-On Practice#

Practice 1#

Requirement

खालील repeated numbers मधून unique values तयार करा.

PYTHON
numbers = [10, 20, 10, 30, 20, 40]

Your Task

set() वापरून unique numbers तयार करा आणि unique elements ची count print करा.

HintShow Hint

List set() ला द्या.

SolutionShow Solution
PYTHON
numbers = [10, 20, 10, 30, 20, 40]

unique_numbers = set(numbers)

print(len(unique_numbers))

Expected Output

TEXT
4

Explanation

Unique values आहेत:

TEXT
10, 20, 30, 40

म्हणून count 4 आहे.


Practice 2#

Requirement

खालील skills साठी mutable unique collection तयार करा:

TEXT
Python
SQL
Java

नंतर Git add करा.

Your Task

योग्य Python type वापरा.

HintShow Hint

Collection नंतर बदलायची आहे.

SolutionShow Solution
PYTHON
skills = {"Python", "SQL", "Java"}

skills.add("Git")

print(len(skills))

Expected Output

TEXT
4

Explanation

आपल्याला collection मध्ये नवीन skill add करायची होती.

म्हणून mutable set योग्य आहे.


Practice 3#

Requirement

खालील permissions ची immutable unique collection तयार करा:

TEXT
read
write
execute

Your Task

योग्य Python type वापरा.

HintShow Hint

Collection तयार झाल्यानंतर modify होता कामा नये.

SolutionShow Solution
PYTHON
permissions = frozenset(["read", "write", "execute"])

print(type(permissions))

Expected Output

TEXT
<class 'frozenset'>

Explanation

Unique values हव्या आहेत आणि collection fixed ठेवायची आहे.

म्हणून frozenset योग्य आहे.


Practice 4#

Requirement

खालील code पाहा:

PYTHON
languages = {"Python", "Java", "SQL"}

कोणी असा code लिहिला:

PYTHON
print(languages[0])

Your Task

हा code का चुकीचा आहे ते explain करा.

HintShow Hint

Set च्या positional order बद्दल विचार करा.

SolutionShow Solution

set unordered collection आहे.

त्यातील elements साठी list सारखी positional indexing उपलब्ध नसते.

म्हणून languages[0] वापरता येत नाही.

Explanation

Set वापरताना specific index वर कोणती value आहे यावर program logic अवलंबून ठेवायचा नाही.

26. Final Challenge#

Scenario

एका learning platform वर students ने निवडलेल्या technologies अशा आहेत:

PYTHON
selected = [
    "Python",
    "SQL",
    "Python",
    "Java",
    "SQL",
    "Git"
]

आपल्याला:

  • duplicate technologies काढायच्या आहेत
  • unique technologies ची count काढायची आहे
  • त्या unique technologies ची fixed version तयार करायची आहे

Requirements

  1. selected पासून mutable set तयार करा.
  2. Unique technologies ची count print करा.
  3. त्याच values पासून frozenset तयार करा.
  4. दोन्ही objects चे type print करा.

Your Task

Complete Python code लिहा.

Hint 1Show Hint 1

पहिल्या step मध्ये set(selected) वापरू शकता.

Hint 2Show Hint 2

Fixed collection साठी frozenset() वापरा.

SolutionShow Solution
PYTHON
selected = [
    "Python",
    "SQL",
    "Python",
    "Java",
    "SQL",
    "Git"
]

unique_technologies = set(selected)
fixed_technologies = frozenset(unique_technologies)

print(len(unique_technologies))
print(type(unique_technologies).__name__)
print(type(fixed_technologies).__name__)

Expected Output

TEXT
4
set
frozenset

Explanation

Original data मध्ये काही technologies repeated होत्या.

set(selected) ने duplicate values काढून unique technologies ठेवल्या.

Unique technologies चार आहेत:

  • Python
  • SQL
  • Java
  • Git

म्हणून पहिला output 4 आहे.

unique_technologies normal mutable set असल्यामुळे त्याचा type set आहे.

त्यापासून तयार केलेली fixed collection frozenset type ची आहे.

27. या Chapter मधून काय लक्षात ठेवायचे?#

  • set unique elements ठेवतो.
  • Duplicate equal values स्वतंत्र entries म्हणून राहत नाहीत.
  • Set तयार करण्यासाठी {value1, value2} किंवा set() वापरता येते.
  • Empty set साठी set() वापरावे.
  • {} म्हणजे empty set नाही.
  • set unordered collection आहे.
  • Set मध्ये positional indexing वर rely करता येत नाही.
  • Normal set mutable आहे.
  • Set मध्ये elements add किंवा remove करता येतात.
  • frozenset सुद्धा unique elements ठेवतो.
  • frozenset unordered आहे.
  • frozenset immutable आहे.
  • Collection बदलायची असल्यास set उपयोगी आहे.
  • Collection fixed ठेवायची असल्यास frozenset उपयोगी आहे.
Interview Point

एका sentence मध्ये मुख्य फरक सांगायचा असेल तर: A set is mutable, whereas a frozenset is immutable; both contain unique unordered elements.

Interactive learning

Practice lab

Apply this chapter with guided activities, immediate feedback, explanations, and retry.

Practice loads when this section enters view.