C# में डिक्शनरी पर इटरेशन: शुरुआती और प्रोफेशनल्स के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में डिक्शनरी: यह क्यों महत्वपूर्ण है और उनके साथ कैसे काम करें?

\n\n

कल्पना करें कि आप एक लाइब्रेरियन हैं। आपके पास हजारों किताबें हैं, और आपको एक सेकंड में एक विशिष्ट किताब ढूंढनी है। क्या आप सभी किताबों को एक-एक करके छानेंगे? नहीं, आप एक कैटलॉग का उपयोग करेंगे। C# में डिक्शनरी (Dictionary) बिल्कुल ऐसा ही कैटलॉग है। यह "कुंजी-मान" जोड़े संग्रहीत करता है और आपको कुंजी द्वारा तुरंत डेटा प्राप्त करने की अनुमति देता है।

\n\n

लेकिन क्या होगा जब आपको एक रिकॉर्ड खोजने की नहीं, बल्कि डिक्शनरी की सभी सामग्री को प्रोसेस करने की आवश्यकता हो? उदाहरण के लिए, एप्लिकेशन की सभी सेटिंग्स प्रदर्शित करना, ऑनलाइन स्टोर की कार्ट में योग की गणना करना या डेटा को JSON में सीरियलाइज़ करना। यहीं पर क्लासिक प्रश्न उठता है: "How to iterate over a dictionary?"।

\n\n

Stack Overflow पर इस प्रश्न ने हजारों व्यूज़ प्राप्त किए हैं। और यह व्यर्थ नहीं है: ऐसा लगता है, इसमें क्या मुश्किल है? लेकिन शुरुआती अक्सर डेटा प्रकारों पर अटक जाते हैं, और प्रोफेशनल्स प्रदर्शन पर। इस लेख में हम C# में डिक्शनरी पर इटरेशन के सभी तरीकों को कवर करेंगे: सरल foreach से लेकर उन्नत LINQ तक। चलिए शुरू करते हैं!

\n\n

1. आधार: C# में Dictionary की संरचना

\n\n

इटरेट करने से पहले, आइए याद करें कि C# डिक्शनरी कैसी दिखती है। यह System.Collections.Generic नेमस्पेस से एक सामान्यीकृत संग्रह है।

\n\n
Dictionary<string, int> ages = new Dictionary<string, int>()\n{\n    { "Анна", 25 },\n    { "Борис", 30 },\n    { "Виктор", 35 }\n};
\n\n

डिक्शनरी का प्रत्येक तत्व KeyValuePair<TKey, TValue> संरचना है। इसमें दो गुण हैं: Key और Value। ट्रैवर्सल के दौरान हम इसी जोड़ी के साथ काम करेंगे।

\n\n

2. क्लासिक: डिक्शनरी पर foreach

\n\n

C# डिक्शनरी पर इटरेशन का सबसे सामान्य तरीका foreach लूप है। यह संक्षिप्त, पढ़ने में आसान और सुरक्षित है।

\n\n
foreach (KeyValuePair<string, int> kvp in ages)\n{\n    Console.WriteLine($"{kvp.Key}: {kvp.Value} лет");\n}
\n\n

आउटपुट:

\n
Анна: 25 лет\nБорис: 30 лет\nВиктор: 35 лет
\n\n

ध्यान दें: kvp एक KeyValuePair है। लूप के अंदर कुंजी या मान को बदलने का प्रयास न करें — डिक्शनरी असंगत हो जाएगी, और आपको InvalidOperationException अपवाद मिलेगा।

\n\n

प्रो टिप: यदि पूरा प्रकार लिखना कठिन लगता है, तो var का उपयोग करें:

\n
foreach (var kvp in ages) { ... }
\n\n

3. केवल कुंजियाँ या केवल मान

\n\n

कभी-कभी हमें पूरी जोड़ी की आवश्यकता नहीं होती। उदाहरण के लिए, बस सभी कुंजियों (नामों) या सभी मानों (आयु) की सूची प्रदर्शित करनी है। इसके लिए डिक्शनरी में Keys और Values गुण हैं।

\n\n

कुंजियों पर इटरेशन

\n
foreach (string name in ages.Keys)\n{\n    Console.WriteLine($"Имя: {name}");\n}
\n\n

मानों पर इटरेशन

\n
foreach (int age in ages.Values)\n{\n    Console.WriteLine($"Возраст: {age}");\n}
\n\n

यदि आपको दूसरे भाग की आवश्यकता नहीं है, तो यह KeyValuePair प्राप्त करने से तेज़ है। साथ ही कोड साफ़ हो जाता है।

\n\n

4. इंडेक्स एक्सेस: for और ElementAt

\n\n

कई शुरुआती for (int i = 0; i < dict.Count; i++) लागू करने का प्रयास करते हैं। लेकिन C# में Dictionary नंबर द्वारा इंडेक्सेटर का समर्थन नहीं करता! dict[i] लिखने का प्रयास संकलन त्रुटि देगा।

\n\n

हालांकि, एक तरीका है: .ToList() के माध्यम से जोड़ियों का संग्रह प्राप्त करें और इंडेक्स द्वारा एक्सेस करें।

\n\n
var list = ages.ToList();\nfor (int i = 0; i < list.Count; i++)\n{\n    Console.WriteLine($"{list[i].Key}: {list[i].Value}");\n}
\n\n

नुकसान:

\n
    \n
  • डेटा की एक अतिरिक्त प्रतिलिपि बनाई जाती है (मेमोरी + समय)।
  • \n
  • डिक्शनरी का एक साहचर्य सरणी के रूप में अर्थ खो जाता है।
  • \n
\n

इस विधि का उपयोग केवल तभी करें जब आपको इंडेक्स की सख्त आवश्यकता हो (उदाहरण के लिए, भागों में विभाजन के साथ समानांतर प्रसंस्करण के लिए)।

\n\n

5.

ब्लॉग

पुस्तक अनुशंसाएँ