पायथन KeyError कैसे संभालें
पायथन KeyError तब उठाया जाता है जब आप किसी शब्दकोश में उस आइटम को एक्सेस करने का प्रयास करते हैं जो मौजूद नहीं है। आप अपने प्रोग्राम को संशोधित करके इस त्रुटि को ठीक कर सकते हैं ताकि वह शब्दकोश से कोई ऐसा आइटम चुने जो मौजूद हो। या आप पहले जांच करके इस त्रुटि को संभाल सकते हैं कि कुंजी मौजूद है या नहीं।
पायथन KeyError कैसे संभालें
क्या आपका अभी KeyError से सामना हुआ है? चिंता न करें! जब KeyError उठाया जाता है, तो इसका मतलब है कि आप शब्दकोश के अंदर किसी ऐसी कुंजी को एक्सेस करने का प्रयास कर रहे हैं जो मौजूद नहीं है। जब आप जानते हैं कि कैसे, तो इस त्रुटि को संभालना और ठीक करना आसान है।
KeyErrors को try…except ब्लॉक का उपयोग करके, "in" कीवर्ड का उपयोग करके, या इंडेक्सिंग का उपयोग करके पहले से कुंजी की जांच करके संभाला जा सकता है।
इस गाइड में, हम बात करेंगे कि पायथन KeyErrors क्या हैं और वे क्यों उठाए जाते हैं। हम एक त्रुटि के उदाहरण और इसे कैसे ठीक करें, इसके माध्यम से चलेंगे ताकि आप भविष्य में KeyErrors को संबोधित करना जान सकें।
चलो शुरू करते हैं!
पायथन KeyError क्या है?
पायथन KeyError तब होता है जब आप इंडेक्सिंग सिंटैक्स का उपयोग करके शब्दकोश में किसी ऐसे आइटम को एक्सेस करने का प्रयास करते हैं जो मौजूद नहीं है। यह त्रुटि उठाई जाती है क्योंकि पायथन शब्दकोश में मौजूद नहीं होने वाले आइटम के लिए मान नहीं लौटा सकता।
पायथन शब्दकोश कुंजी-मान जोड़े का एक सेट है जो कर्ली ब्रेसेस ({}) के भीतर संग्रहीत होते हैं:
raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}
कुंजियाँ "name", "price", और "RAM" हैं। कुंजियाँ शब्दकोश में कोलन से पहले दिखाई देती हैं।
आइए देखते हैं कि क्या होता है अगर हम अपने शब्दकोश में USB पोर्ट की संख्या प्राप्त करने का प्रयास करते हैं:
print(raspberry_pi["usb_ports"])
हमारा कोड निम्न लौटाता है:
KeyError: 'usb_ports'
यह त्रुटि हमें बताती है कि हमारे द्वारा निर्दिष्ट कुंजी मौजूद नहीं है। इस मामले में, गायब कुंजी "usb_ports" है।
KeyError पायथन: समाधान
पायथन शब्दकोश KeyError को संभालने के लिए आप:
- इंडेक्सिंग का उपयोग करके पहले से कुंजी की जांच कर सकते हैं
- "in" कीवर्ड का उपयोग करके कुंजी की जांच कर सकते हैं
- try…except ब्लॉक का उपयोग कर सकते हैं।
KeyError को संभालने का समाधान जो आपके लिए सबसे अच्छा काम करता है, आपके उपयोग के मामले के आधार पर भिन्न होगा।
शब्दकोश get() विधि का उपयोग करें
पायथन शब्दकोश get() विधि शब्दकोश में एक मान लौटाती है। आप get() विधि के साथ एक डिफ़ॉल्ट मान निर्दिष्ट कर सकते हैं। यदि आपके द्वारा निर्दिष्ट कुंजी के नाम का कोई मान नहीं है, तो यह डिफ़ॉल्ट मान लौटाया जाता है।
निम्न कोड पर विचार करें:
raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}
get_key = input("What information would you like to retrieve (name, price, RAM)? ")
print("The {} for this computer is {}.".format(get_key, raspberry_pi.get(get_key, "not available")))
आइए पायथन इंटरप्रेटर का उपयोग करके अपना कोड चलाएं और देखें क्या होता है:
What information would you like to retrieve? ALU The ALU for this computer is not available.
हमारा कोड "ALU" को हमारे शब्दकोश से प्राप्त करने के लिए शब्दकोश get() विधि का उपयोग करता है। इस कुंजी नाम से कोई मान मेल नहीं खाता। get() विधि हमारे द्वारा निर्दिष्ट डिफ़ॉल्ट मान लौटाती है, जो "not available" है।
इंडेक्सिंग का उपयोग करके पहले से कुंजी की जांच करें
आप KeyError का सामना करने से बचने के लिए इंडेक्सिंग का उपयोग करके कुंजी के अस्तित्व की जांच कर सकते हैं। यदि कुंजी शब्दकोश में है, तो आप उस कुंजी का उपयोग कर सकते हैं। अन्यथा, आप अपने प्रोग्राम को कुछ और करने का निर्देश दे सकते हैं जो उस कुंजी पर निर्भर नहीं करता।
आइए एक प्रोग्राम लिखें जो पायथन में हमारे "raspberry_pi" शब्दकोश में कुंजियों को एक्सेस करता है। आइए इंडेक्सिंग का उपयोग करके जांचें कि हमारी कुंजी हमारे शब्दकोश में है या नहीं:
raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}
get_key = input("What information would you like to retrieve (name, price, RAM)? ")
if raspberry_pi[get_key]:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
else:
print("This information is not available.")
हमने यह जांचने के लिए पायथन "if" स्टेटमेंट का उपयोग किया है कि हमारी कुंजी मौजूद है या नहीं। "raspberry_pi[get_key]" केवल तभी मान लौटाएगा जब कुंजी मौजूद हो। इसका मतलब है कि यदि हमारी कुंजी मौजूद है, तो हमारा "if" स्टेटमेंट निष्पादित होगा। यदि हमारी कुंजी मौजूद नहीं है, तो "else" स्टेटमेंट निष्पादित होगा।
आइए हमारे रास्पबेरी पाई के लिए RAM का पता लगाने का प्रयास करें:
What information would you like to retrieve (name, price, RAM)? RAM The RAM for this computer is 4GB.
अब, आइए यह पता लगाने का प्रयास करें कि कंप्यूटर में कितने USB पोर्ट हैं:
What information would you like to retrieve (name, price, RAM)? USB This information is not available.
हमारा कोड KeyError नहीं उठाता! ऐसा इसलिए है क्योंकि हमने पहले जांच की है कि हमारी कुंजी मौजूद है या नहीं, इसके उपयोग से पहले। यदि हमने अपने "else" स्टेटमेंट के अंदर raspberry_pi[get_key] का उपयोग किया होता, तो हमारा कोड KeyError लौटाता।
try…except ब्लॉक का उपयोग करना
पायथन try…except ब्लॉक कोड की एक पंक्ति चलाने का प्रयास करेगा। यदि कोड की वह पंक्ति नहीं चल सकती, तो हमारा कोड आपके द्वारा बताए गए अपवादों के अनुसार एक कस्टम त्रुटि उठाएगा।
हम try…except ब्लॉक का उपयोग त्रुटि के अस्तित्व को निर्धारित करने और अप्रत्याशित KeyError को हमारे पायथन प्रोग्राम को रोकने से रोकने के लिए कर सकते हैं।
आइए try…except ब्लॉक का उपयोग करके हमारे कंप्यूटर उदाहरण के लिए पहले से एक कस्टम त्रुटि परिभाषित करें:
raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}
get_key = input("What information would you like to retrieve (name, price, RAM)? ")
try:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
except KeyError:
print("This information is not available.")
हम कंसोल पर रास्पबेरी पाई कंप्यूटर के बारे में जानकारी का एक विशेष टुकड़ा प्रिंट करने का प्रयास करने के लिए try…except ब्लॉक का उपयोग करते हैं। यदि हमारा कोड "try" ब्लॉक में कहीं भी KeyError उठाता है, तो हमारा कोड "except" ब्लॉक की सामग्री को निष्पादित करता है।
इसका मतलब है कि हर बार KeyError उठाया जाता है, "This information is not available" कंसोल पर प्रिंट होता है। आइए कंप्यूटर के नाम के बारे में पता लगाने का प्रयास करें:
What information would you like to retrieve (name, price, RAM)? name The name for this computer is Raspberry Pi 4.
अब, आइए कंप्यूटर की USB पोर्ट उपलब्धता के बारे में जानने का प्रयास करें:
What information would you like to retrieve (name, price, RAM)? USB This information is not available.
हमारा कोड हमारे "try" ब्लॉक के अंदर KeyError उठाता है। यह हमारे कोड को कोड के "except" ब्लॉक को निष्पादित करने का कारण बनता है।
"in" का उपयोग करके पहले से कुंजी की जांच करें
"in" कीवर्ड पायथन के सदस्यता ऑपरेटर्स में से एक है। यह जांचता है कि कोई आइटम मानों की सूची में है या नहीं। आप "in" कीवर्ड का उपयोग यह जांचने के लिए कर सकते हैं कि कोई कुंजी शब्दकोश के अंदर है या नहीं।
यह प्रोग्राम कंसोल पर इसका मान प्रिंट करने से पहले जांचेगा कि कुंजी मौजूद है या नहीं:
raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}
get_key = input("What information would you like to retrieve (name, price, RAM)? ")
if get_key in raspberry_pi:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
else:
print("This information is not available.")
यह कोड जांचेगा कि "get_key" का मान "raspberry_pi" शब्दकोश के अंदर कुंजी है या नहीं। यदि कुंजी मौजूद है, तो "if" स्टेटमेंट चलेगा। अन्यथा, "else" स्टेटमेंट चलेगा। आइए कंप्यूटर के CPU के बारे में जानकारी की जांच करने का प्रयास करें:
What information would you like to retrieve (name, price, RAM)? CPU This information is not available.
आइए कंप्यूटर के नाम की जांच करें:
What information would you like to retrieve (name, price, RAM)? name The name for this computer is Raspberry Pi 4.
हमारा कोड काम करता है! जब हम किसी ऐसी कुंजी की खोज करते हैं जो मौजूद नहीं है, तो "else" स्टेटमेंट चलता है। इसका मतलब है कि हमारे कोड में कोई KeyError नहीं उठाया जा सकता क्योंकि हम "else" ब्लॉक में कुंजी को एक्सेस करने का प्रयास नहीं करते।
हमारा कोड काम करता है! जब हम किसी ऐसी कुंजी की खोज करते हैं जो मौजूद नहीं है, तो "else" स्टेटमेंट चलता है। इसका मतलब है कि हमारे कोड में कोई KeyError नहीं उठाया जा सकता क्योंकि हम "else" ब्लॉक में कुंजी को एक्सेस करने का प्रयास नहीं करते।
निष्कर्ष
KeyError तब उठाया जाता है जब आप शब्दकोश से ऐसा मान एक्सेस करने का प्रयास करते हैं जो मौजूद नहीं है। KeyError को हल करने के लिए, आप पहले से कुंजी की जांच कर सकते हैं और केवल तभी इसका उपयोग कर सकते हैं जब कुंजी मौजूद हो। आप KeyError को संभालने के लिए try…except ब्लॉक का उपयोग कर सकते हैं।
पायथन प्रोग्रामिंग भाषा सीखने के तरीके पर सलाह के लिए, हमारा संपूर्ण How to Learn Python गाइड देखें। आपको इस गाइड में शीर्ष सीखने के संसाधनों, पुस्तकों, और पाठ्यक्रमों के लिंक मिलेंगे।