Python नेस्टेड डिक्शनरी एक डिक्शनरी के अंदर दूसरी डिक्शनरी होती है। यह आपको मौजूदा डिक्शनरी के भीतर की-वैल्यू मैपिंग संरचना का उपयोग करके डेटा संग्रहीत करने देती है।
जब आप Python में डिक्शनरीज़ के साथ काम कर रहे होते हैं, तो आप ऐसी स्थिति का सामना कर सकते हैं जहां एक डिक्शनरी में दूसरी डिक्शनरी होती है।
डेटा की इस संरचना को अक्सर नेस्टेड डिक्शनरी कहा जाता है, और Python कोड में इसके उपयोग के मामलों की एक विस्तृत श्रृंखला होती है।
यह ट्यूटोरियल Python नेस्टेड डिक्शनरी की मूल बातों पर चर्चा करेगा। हम कुछ उदाहरणों के माध्यम से चलेंगे ताकि आप सीख सकें कि नेस्टेड डिक्शनरी कैसे बनाएं और संशोधित करें।
Python Dictionary पुनर्कथन
डिक्शनरी Python का मैपिंग डेटा प्रकार है। Python डिक्शनरी कुंजियों को मानों से बांधती है — या मैप करती है — और डेटा संग्रहीत करने का एक प्रभावी तरीका प्रदान करती है।
जब किसी कुंजी को मान से मैप किया जाता है, तो आप उस कुंजी को संदर्भित करके उस मान में संग्रहीत डेटा को पुनर्प्राप्त कर सकते हैं। तो, एक अर्थ में, कुंजी एक लेबल की तरह काम करती है। यहाँ एक डिक्शनरी का उदाहरण है जो स्थानीय आइसक्रीम स्टोर, The Frozen Spoon पर बेचे जाने वाले आइसक्रीम फ्लेवर्स की कीमतों को संग्रहीत करता है:
ice_cream_flavors = {
"Vanilla": 0.50,
"Chocolate": 0.50,
"Cookies and Cream": 0.75,
"Strawberry": 0.65,
"Buttered Pecan": 0.90
}
इस डिक्शनरी में कुंजियाँ हमारे आइसक्रीम के नाम हैं (यानी "Vanilla"), और मान प्रत्येक आइसक्रीम के प्रति स्कूप की कीमतें हैं।
Python Nested Dictionary
Python नेस्टेड डिक्शनरीज़ एक डिक्शनरी के अंदर डिक्शनरीज़ होती हैं। उनका उपयोग किसी अन्य डिक्शनरी के भीतर डिक्शनरी डेटा को दर्शाने के लिए किया जाता है। आप जितनी चाहें उतनी डिक्शनरीज़ को डिक्शनरी में नेस्ट कर सकते हैं।
नेस्टेड डिक्शनरीज़ उपयोगी हैं यदि आप एक बड़ी डिक्शनरी में कई घटक डिक्शनरीज़ संग्रहीत करना चाहते हैं।
आइए एक उदाहरण के माध्यम से चलें ताकि यह दिखाया जा सके कि नेस्टेड डिक्शनरीज़ कैसे काम करती हैं। मान लीजिए हम एक डिक्शनरी बनाना चाहते हैं जो The Frozen Spoon पर बेचे जाने वाले आइसक्रीम के प्रत्येक फ्लेवर के बारे में डिक्शनरीज़ संग्रहीत करे। हमारी बड़ी डिक्शनरी में प्रत्येक डिक्शनरी को सूचीबद्ध करना चाहिए:
- आइसक्रीम का नाम
- इसकी कीमत
- स्टॉक में कितने पिंट हैं
यहाँ एक नेस्टेड डिक्शनरी कैसी दिखेगी जो इस डेटा को संग्रहीत करती है:
ice_cream_flavors = {
0: {
"flavor": "Vanilla",
"price": 0.50,
"pints": 20
},
1: {
"flavor": "Chocolate",
"price": 0.50,
"pints": 31
},
2: {
"flavor": "Cookies and Cream",
"price": 0.75,
"pints": 14
}
}
हमारे कोड में, हमने ice_cream_flavors नामक एक बड़ी डिक्शनरी घोषित की है। इस डिक्शनरी में तीन डिक्शनरीज़ हैं, जिनमें से प्रत्येक आइसक्रीम के विशेष फ्लेवर की जानकारी संग्रहीत करती है।
यदि हम नेस्टेड डिक्शनरी का उपयोग नहीं करते, तो हमें इनमें से प्रत्येक डिक्शनरी को अलग-अलग वेरिएबल्स में संग्रहीत करना होता। यह प्रति-सहज है क्योंकि प्रत्येक डिक्शनरी आइसक्रीम फ्लेवर्स के बारे में जानकारी संग्रहीत करती है।
नेस्टेड डिक्शनरी में आइटम एक्सेस करें
नेस्टेड डिक्शनरी में आइटम एक्सेस करने के लिए, हम इंडेक्सिंग सिंटैक्स का उपयोग कर सकते हैं।
मान लीजिए हम अपनी डिक्शनरी में इंडेक्स मान 0 वाली आइसक्रीम की कीमत पुनर्प्राप्त करना चाहते हैं। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
ice_cream_flavors = {
0: {
"flavor": "Vanilla",
"price": 0.50,
"pints": 20
},
1: {
"flavor": "Chocolate",
"price": 0.50,
"pints": 31
},
2: {
"flavor": "Cookies and Cream",
"price": 0.75,
"pints": 14
}
}
print(ice_cream_flavors[0]["price"])
print(ice_cream_flavors[0]["flavor"])
हमारा कोड लौटाता है:
0.50 Vanilla
इस कोड में, हम पहले अपनी बड़ी डिक्शनरी में उस आइटम की कुंजी निर्दिष्ट करते हैं जिसका मान हम पुनर्प्राप्त करना चाहते हैं। इस मामले में, हम इंडेक्स मान 0 वाले रिकॉर्ड तक पहुंचना चाहते थे।
फिर, हम अपनी आंतरिक डिक्शनरी में उस आइटम का नाम निर्दिष्ट करते हैं जिसे हम पुनर्प्राप्त करना चाहते हैं। इस मामले में, हम अपनी आइसक्रीम की कीमत और फ्लेवर पुनर्प्राप्त करना चाहते थे। इसलिए, हमने दोनों print() स्टेटमेंट्स में price और flavor निर्दिष्ट किए।
Nested Dictionary Python: एलिमेंट जोड़ें
नेस्टेड डिक्शनरी में एलिमेंट जोड़ने के लिए, हम उसी सिंटैक्स का उपयोग कर सकते हैं जिसका उपयोग हमने आइटम संशोधित करने के लिए किया था। नेस्टेड डिक्शनरी में आइटम जोड़ने के लिए आपको कोई मेथड उपयोग करने की आवश्यकता नहीं है। आपको असाइनमेंट ऑपरेटर का उपयोग करने की आवश्यकता है।
आइटम जोड़ने का सिंटैक्स निम्नानुसार है:
dictionary_name[new_key_name] = new_value
मान लीजिए हमारे पास एक डिक्शनरी है जो बिक्री के लिए वैनिला आइसक्रीम की जानकारी संग्रहीत करती है। हम ट्रैक करना चाहते हैं कि आइसक्रीम पर छूट है या नहीं। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
ice_cream_flavors = {
0: {
"flavor": "Vanilla",
"price": 0.50,
"pints": 20
},
1: {
"flavor": "Chocolate",
"price": 0.50,
"pints": 31
},
2: {
"flavor": "Cookies and Cream",
"price": 0.75,
"pints": 14
}
}
ice_cream_flavors[0]["discount"] = True
print(ice_cream_flavors[0])
आइए अपना कोड चलाएं और देखें क्या होता है:
{'flavor': 'Vanilla', 'price': 0.5, 'pints': 20, 'discount': True}
हमारी डिक्शनरी Python वेरिएबल "ice_cream_flavors" में संग्रहीत है।
हमने डिक्शनरी में discount नामक एक कुंजी जोड़ी। इस कुंजी की इंडेक्स स्थिति 0 है। हमने इस कुंजी का मान True पर सेट किया। फिर, हमने अपने ice_cream_flavors नेस्टेड डिक्शनरी में इंडेक्स मान 0 वाली डिक्शनरी को प्रिंट किया। यह दर्शाता है कि हमारी discount कुंजी जोड़ दी गई है।
हम इस सिंटैक्स का उपयोग मौजूदा डिक्शनरी में एलिमेंट अपडेट करने के लिए कर सकते हैं। मान लीजिए हम अपनी चॉकलेट आइसक्रीम की कीमत को $0.45 प्रति स्कूप बदलना चाहते हैं। हम निम्न कोड का उपयोग करके ऐसा कर सकते हैं:
ice_cream_flavors = {
0: {
"flavor": "Vanilla",
"price": 0.50,
"pints": 20
},
1: {
"flavor": "Chocolate",
"price": 0.50,
"pints": 31
},
2: {
"flavor": "Cookies and Cream",
"price": 0.75,
"pints": 14
}
}
ice_cream_flavors[1]["price"] = 0.45
print(ice_cream_flavors[1])
हमारा कोड लौटाता है:
{'flavor': 'Chocolate', 'price': 0.45, 'pints': 31}
हमने अपनी चॉकलेट आइसक्रीम के लिए price कुंजी का मान $0.45 कर दिया।
ऐसा करने के लिए, हमने उस डिक्शनरी का इंडेक्स मान निर्दिष्ट किया जिसके price मान को हम बदलना चाहते थे, 1 के रूप में। इस मान में हमारे डिक्शनरी में चॉकलेट आइसक्रीम के बारे में जानकारी है। फिर, हमने price कुंजी को एक नया मान निर्दिष्ट किया।
Nested Dictionary Python: एलिमेंट हटाएं
नेस्टेड डिक्शनरी में संग्रहीत आइटम को हटाने के लिए, हम del स्टेटमेंट का उपयोग कर सकते हैं। del स्टेटमेंट आपको ऑब्जेक्ट हटाने देता है। del Python break स्टेटमेंट की तरह लिखा जाता है, अपनी पंक्ति पर, उसके बाद डिक्शनरी में वह आइटम जिसे आप हटाना चाहते हैं।
मान लीजिए हम अस्थायी रूप से अपने स्टोर पर कुकीज़ एंड क्रीम आइसक्रीम नहीं दे रहे हैं। हमारा फ्रीजर जिसमें कुकीज़ एंड क्रीम आइसक्रीम संग्रहीत थी, काम करना बंद कर दिया और सामान पिघल गया।
हम निम्न कोड का उपयोग करके इस आइसक्रीम को अपनी नेस्टेड डिक्शनरी से हटा सकते हैं:
ice_cream_flavors = {
0: {
"flavor": "Vanilla",
"price": 0.50,
"pints": 20
},
1: {
"flavor": "Chocolate",
"price": 0.50,
"pints": 31
},
2: {
"flavor": "Cookies and Cream",
"price": 0.75,
"pints": 14
}
}
del ice_cream_flavors[2]
print(ice_cream_flavors)
हमारा कोड लौटाता है:
{0: {'flavor': 'Vanilla', 'price': 0.5, 'pints': 20}, 1: {'flavor': 'Chocolate', 'price': 0.5, 'pints': 31}}
हमारे कोड में, हमने del स्टेटमेंट का उपयोग अपनी नेस्टेड डिक्शनरी में उस मान को हटाने के लिए किया जिसकी कुंजी 2 के बराबर थी। जैसा कि आप देख सकते हैं, इसने हमारे नेस्टेड डिक्शनरी से Cookies and Cream की एंट्री हटा दी।
Python नेस्टेड डिक्शनरी के माध्यम से पुनरावृति करें
अब, मान लीजिए हम अपनी नेस्टेड डिक्शनरी में प्रत्येक डिक्शनरी की सामग्री को कंसोल पर प्रिंट करना चाहते हैं। हम इस कार्य को कैसे पूरा कर सकते हैं?
यह एक बढ़िया सवाल है। हमारी नेस्टेड डिक्शनरी की सामग्री को प्रिंट करने के लिए, हम Python फॉर लूप का उपयोग करके इसके माध्यम से पुनरावृति कर सकते हैं। हम Python डिक्शनरी items() मेथड का उपयोग अपनी डिक्शनरी में कुंजियों और मानों की सूची पुनर्प्राप्त करने के लिए भी करेंगे:
ice_cream_flavors = {
0: {
"flavor": "Vanilla",
"price": 0.50,
"pints": 20
},
1: {
"flavor": "Chocolate",
"price": 0.50,
"pints": 31
},
2: {
"flavor": "Cookies and Cream",
"price": 0.75,
"pints": 14
}
}
for key, value in ice_cream_flavors.items():
print("Ice Cream:", key)
for k, v in value.items():
print(k + ":", value[k])
हमारा कोड लौटाता है:
Ice Cream: 0 flavor: Vanilla price: 0.5 pints: 20 Ice Cream: 1 flavor: Chocolate price: 0.5 pints: 31 Ice Cream: 2 flavor: Cookies and Cream price: 0.75 pints: 14
आइए अपने कोड को तोड़ें। सबसे पहले, हमने आइसक्रीम फ्लेवर्स की अपनी नेस्टेड डिक्शनरी को परिभाषित किया।
फिर, हमने एक फॉर लूप परिभाषित किया जो ice_cream_flavors डिक्शनरी में प्रत्येक कुंजी और मान के माध्यम से जाता है। यह लूप हमारे ice_cream_flavors डिक्शनरी में सभी कुंजियों और मानों की सूची उत्पन्न करने के लिए .items() का उपयोग करता है, जिस पर लूप पुनरावृति कर सकता है।
फिर, हम Ice Cream: प्रिंट करते हैं जिसके बाद किसी विशेष आइसक्रीम से जुड़ी कुंजी होती है।
अगला, हम अपनी नेस्टेड डिक्शनरी में प्रत्येक value में हर आइटम के माध्यम से लूप करने के लिए एक और फॉर लूप का उपयोग करते हैं। यह हमारी नेस्टेड डिक्शनरी में प्रत्येक आंतरिक एंट्री को संदर्भित करता है (जैसे वैनिला और चॉकलेट के लिए)। यह लूप हमारी आंतरिक डिक्शनरी में प्रत्येक कुंजी का नाम प्रिंट करता है, उसके बाद एक कोलन, फिर उस कुंजी से जुड़ा मान।
निष्कर्ष
नेस्टेड डिक्शनरीज़ आपको Python में डिक्शनरी के अंदर डिक्शनरीज़ संग्रहीत करने की अनुमति देती हैं।
इस ट्यूटोरियल ने उदाहरणों के संदर्भ में चर्चा की कि कैसे:
- नेस्टेड डिक्शनरी बनाएं
- नेस्टेड डिक्शनरी में एलिमेंट्स जोड़ें और अपडेट करें
- नेस्टेड डिक्शनरी से एलिमेंट्स हटाएं
- नेस्टेड डिक्शनरी के माध्यम से पुनरावृति करें
Python में कोडिंग के बारे में अधिक जानने के लिए, हमारा How to Code in Python गाइड पढ़ें।