Dictionary Data Structure in Python

Dictionary Data Structure in Python – Core Types Chapter के अन्‍तर्गत हमने Dictionary को काफी सारे Simple Examples द्वारा Use करने के बारे में सीखा था। इस Chapter में हम उन पहले से Discussed Concepts को फिर से Discuss नहीं करेंगे, बल्कि एक Example Program के माध्‍यम से थोड़ा सा Revision करते हुए उन Concepts के बारे में जानेंगे, जिन्‍हें Core Types के अन्‍तर्गत Cover नहीं किया था।

हम जब भी कोई Dictionary Create करना चाहते हैं, तब Dictionary Create करते समय हमें Curly Braces { } Literal का प्रयोग करना होता है या फिर हम dict() Constructor का भी प्रयोग कर सकते हैं और Data Items के रूप में हमें Key:Value Pair को Specify करना होता है। यदि एक से ज्‍यादा Data Items को Specify करना हो, तो उस स्थिति में हमें सभी Data Items के key:value Pair को एक Comma Separated List के रूप में Create करना होता है। एक Example द्वारा Dictionary के Basic Concepts को एक बार फिर से Revise कर लेते हैं-

[code]
FileName: DictionaryBasicOperations.py
# Create Dictionary Using Literal Notation
dicStud1 = {'Name':'KRISHNA', 'Age':6, 'Class':'I'}
print("Dictionary Created Using Literal Notation: \n", dicStud1, "\n")

# Create Dictionary Using dict() Constructor
dicStud2 = dict({'Name':'MURARI', 'Age':7, 'Class':'II'})
print("Dictionary Created Using dict() Constructor:\n", dicStud2, "\n")
print("Name of Student1:", dicStud1['Name'])
print("Age of Student2:", dicStud2['Age'])
print("No. of Data Items in dicStud1:", len(dicStud1))
print("Dose Key 'Name' Exist in dicStud1?", 'Name' in dicStud1)

print()

# Change Value of Key Class of dicStud1
dicStud2['Class'] = ['I','II']
print("Changed Value of Key 'Class' of dicStud1: \n", dicStud2, "\n")

# Delete 'Age' Data Item of dicStud1
del dicStud1['Age']
print("Deleted Data Item 'Age' of dicStud1: \n", dicStud1, "\n")

# Insert New 'Cast' Data Item in dicStud1
dicStud1['Cast'] = 'YADAV'
print("Inserted Data Item 'Cast' in dicStud1: \n", dicStud1, "\n")

# Create List of dicStud1 Values
lstStud1Values = list(dicStud1.values())
print("Created New List of dicStud2 Keys: \n", lstStud1Values, "\n")

# Create List of dicStud2 Keys
lstStud2Keys = list(dicStud2.keys())
print("Created New List of dicStud2 Keys: \n", lstStud2Keys, "\n")

# Create List of Data Items of dicStud2
lstStud2DataItems = list(dicStud2.items())
print("Created New List of dicStud2 Keys: \n", lstStud2DataItems, "\n")

# Get the Associated Value of Key of dicStud1
print("Value of Non-Existing Key Age:", dicStud1.get('Age'))
print("Default Value of Non-Existing Key Age:", dicStud1.get('Age', 6))

# Update Multiple Key:Value Pairs in dicStud1
temp = {'Age':6, 'BPL':'No'}
dicStud1.update(temp)
print("Updated New Key:Value Pairs in dicStud1:\n", dicStud1, "\n")

# POP from dicStud1
print("POP Data Item Associated with 'Key':", dicStud1.pop('Cast'))
print("After POP, Data Items in dicStud1:\n", dicStud1, "\n")

Output
Dictionary Created Using Literal Notation:
 {'Name': 'KRISHNA', 'Age': 6, 'Class': 'I'}
Dictionary Created Using dict() Constructor:
 {'Name': 'MURARI', 'Age': 7, 'Class': 'II'}
Name of Student1: KRISHNA
Age of Student2: 7
No. of Data Items in dicStud1: 3
Dose Key 'Name' Exist in dicStud1? True
Changed Value of Key 'Class' of dicStud1:
{'Name': 'MURARI', 'Age': 7, 'Class': ['I', 'II']}
Deleted Data Item 'Age' of dicStud1:
 {'Name': 'KRISHNA', 'Class': 'I'}
Inserted Data Item 'Cast' in dicStud1:
 {'Name': 'KRISHNA', 'Class': 'I', 'Cast': 'YADAV'}
Created New List of dicStud2 Keys:
 ['KRISHNA', 'I', 'YADAV']
Created New List of dicStud2 Keys:
 ['Name', 'Age', 'Class']
Created New List of dicStud2 Keys:
 [('Name', 'MURARI'), ('Age', 7), ('Class', ['I', 'II'])]
Value of Non-Existing Key 'Age': None
Default Value of Non-Existing Key 'Age': 6
Updated New Key:Value Pairs in dicStud1:
 {'Name': 'KRISHNA', 'Class': 'I', 'Cast': 'YADAV', 'Age': 6, 'BPL': 'No'}
POP Data Item Associated with 'Key': YADAV
After POP, Data Items in dicStud1:
 {'Name': 'KRISHNA', 'Class': 'I', 'Age': 6, 'BPL': 'No'}
[/code]

इस Example में सबसे पहले हमने निम्‍नानुसार दो तरीकों से दो अलग Dictionary Objects Create किए हैं-

dicStud1 = {‘Name’:’KRISHNA’, ‘Age’:6, ‘Class’:’I’}
dicStud2 = dict({‘Name’:’MURARI’, ‘Age’:7, ‘Class’:’II’})

इन दोनों तरीकों से Dictionary Objects Create करने के बारे में Core Types Chapter के अन्‍तर्गत पहले भी समझ चुके हैं। यहां हमने जो दूसरा तरीका Use किया है, उसी तरीके का प्रयोग करके हम किसी Dictionary Object की Copy भी कर सकते हैं। जैसे-

dicStud3 = dict(dicStud1)

ये Statement dicStud3 नाम का एक Variable Create करेगा और उसमें एक Newly Created Dictionary Object का Reference Store कर देगा जबकि इस Newly Created Object के Data Items वे ही होंगे, जो dicStud1 के Data Items हैं क्‍योंकि dicStud3 वास्‍तव में dicStud1 की एक Exact Copy ही है। इसी काम को हम copy() Method का प्रयोग करते हुए भी कर सकते हैं, जैसा कि पिछले Example में List Object के साथ किया था। जैसे-

dicStud3 = dicStud1.copy()

List की तरह ही हम Dictionary के Data Items को भी Access कर सकते हैं, लेकिन जब हम Dictionary के Data Items को Access करना चाहते हैं, तब हमें Data Item की Data Value के साथ Associated Keys को Specify करना पड़ता है क्‍योंकि Dictionary एक Unordered Object के References का Collection होता है। इसीलिए हमने Dictionary के Data Items की Values को Access करने के लिए निम्‍न Statements का प्रयोग किया है-

print(“Name of Student1:”, dicStud1[‘Name’])
print(“Age of Student2:”, dicStud2[‘Age’])

Dictionary Object में Exist कुल Data Items की संख्‍या जानने के लिए हम List की तरह ही len() Function का प्रयोग कर सकते हैं।

print(“No. of Data Items in dicStud1:”, len(dicStud1))

जबकि किसी Dictionary Object में कोई Particular Key Exist है या नहीं, इसका पता लगाने के लिए हम निम्‍नानुसार तरीके से in Membership Operator का भी प्रयोग कर सकते हैं-

print(“Dose Key ‘Name’ Exist in dicStud1?”, ‘Name’ in dicStud1)

जैसाकि हमने पहले भी बताया कि Dictionary एक Unordered List of Object References होता है, इसलिए हम चाहे जिस भी क्रम में इसमें Data Items को Insert करें, इससे Return होने वाले Data Items का क्रम कभी भी निश्चित नहीं होता।

Python हमें keys()values() नाम के दो Methods Provide करता है, जिनका प्रयोग करके हम किसी Dictionary Object के सभी Data Items के Keys और Values की List Return कर सकते हैं। जबकि Object में Exist सभी Data Items की List Return करने के लिए हम items() Method को use कर सकते हैं। इन तीनों Methods को Current Example Program में निम्‍नानुसार Use किया गया है-

lstStud2Keys = list(dicStud2.keys())
lstStud1Values = list(dicStud1.values())
lstStud2DataItems = list(dicStud2.items())

keys() Method जो List Return करता है, वो एक Normal Physical List Object नहीं होता, बल्कि एक Iterable Sequence होता है, जिस पर for…in Looping Statement को Apply किया जा सकता है।

चूंकि Dictionaries भी Lists की तरह ही Mutable होती हैं, इसलिए हम हमारी जरूरत के अनुसार इनमें Data Items Insert करके इन्‍हें Grow कर सकते हैं और किसी किन्‍हीं Data Items को Delete करके इन्‍हें Shrink कर सकते हैं। List की तरह ही del Statement का प्रयोग करके हमने इस Example में निम्‍नानुसार एक Data Item को Delete किया है-

del dicStud1[‘Age’]

जबकि किसी Key के साथ Associated Value को Change करने के लिए हम Assignment Operator का प्रयोग निम्‍ननुसार तरीके से कर सकते हैं-

dicStud2[‘Class’] = [‘I’,’II’]

ये Statement Execute होते ही Dictionary dicStud2 के Key ‘Class’ द्वारा Referenced String ‘I’ के स्‍थान पर List [‘I’,’II’] Replace हो जाता है। परिणामस्‍वरूप हमें निम्‍नानुसार Output प्राप्‍त होता है-

{‘Name’: ‘MURARI’, ‘Age’: 7, ‘Class’: [‘I’, ‘II’]}

जबकि यदि हमें Dictionary में किसी नए Data Item को Insert करना हो, तो उस स्थिति में हम निम्‍नानुसार तरीके से Key:Value Pair के रूप में अपना Data Item Specify करते हैं-

dicStud1[‘Cast’] = ‘YADAV’

परिणामस्‍वरूप एक नया Data Item हमारी Dictionary में Insert हो जाता है और हमारा Modified नया Dictionary Object निम्‍नानुसार हो जाता है-

{ ‘Name’: ‘KRISHNA’, ‘Class’: ‘I’, ‘Cast’: ‘YADAV’ }

किसी Non-Existing Key को Fetch करने पर Normally Error Return होना चाहिए। लेकिन जब हम get() Method का प्रयोग करते हुए किसी Dictionary के Data Item को Return करना चाहते हैं, तब यदि इस Method में Parameter के रूप में किसी Non-Existing Key को Specify कर दिया जाए, तो उस स्थिति में ये Method None Value Return करता है। जैसाकि इस Example Program में निम्‍नानुसार Statement द्वारा Return हो रहा है-

print(“Value of Non-Existing Key Age:”, dicStud1.get(‘Age’))
#Output: Value of Non-Existing Key ‘Age’: None

जबकि इसी get() Method में दूसरे Argument के रूप में हम उस Default Value को भी Specify कर सकते हैं, जो उस स्थिति में Return हो जाता है जबकि Specified Key, Dictionary में पहले से Exist न हो। जैसाकि Current Program में निम्‍न Statement द्वारा किया गया है-

print(“Default Value of Non-Existing Key Age:”, dicStud1.get(‘Age’, 6))
#Output: Default Value of Non-Existing Key ‘Age’: 6

इसी तरह से Python हमें update() नाम का Method भी Provide करता है, जिसका निम्‍नानुसार तरीके से प्रयोग करके हम Multiple Key-Value Pairs को Dictionary में Insert कर सकते हैं-

temp = {‘Age’:6, ‘BPL’:’No’}
dicStud1.update(temp)

जब हम update() Method का प्रयोग करते हैं, तब ये Method पहले से Exist Data Items के साथ नए Data Items को Merge कर देता है और ये Merging भी किसी Specific Sequence में नहीं होती बल्कि Randomly ही होती है, इसलिए यदि हम इस Updated Dictionary को Display करें, तो इसके सभी Data Items किसी Specific क्रम में दिखाई दें, ऐसा बिल्‍कुल भी जरूरी नहीं है।

List की तरह ही Dictionary के साथ भी pop() Method को Use किया जा सकता है लेकिन जब हम Dictionary के साथ pop() Method Use करते हैं, तब ये जरूरी होता है कि हम उस Method में Parameter के रूप में उस Key को Pass करें, जिसे हम Dictionary से Pop करना चाहते हैं। जब हम निम्‍नानुसार तरीके से इस Method को Use करते हैं-

print(“POP Data Item Associated with ‘Key’:”, dicStud1.pop(‘Cast’))

तब Specified Key ‘Cast’ से सम्‍बंधित Data Value Return हो जाता है और Data Item Memory से Pop यानी Delete हो जाता है।

Python Dictionaries
Dictionary Use Cases

Python in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Python in Hindi | Page: 602 | Format: PDF

BUY NOW GET DEMO REVIEWS