Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन की-एरर:ए बिगिनर्स गाइड

जब आप किसी ऐसे शब्दकोश में किसी आइटम तक पहुंचने का प्रयास करते हैं जो मौजूद नहीं है तो एक पायथन KeyError उठाया जाता है। आप अपने प्रोग्राम को किसी ऐसे शब्दकोश से किसी आइटम का चयन करने के लिए संशोधित करके इस त्रुटि को ठीक कर सकते हैं जो मौजूद है। या आप यह जाँच कर इस त्रुटि को संभाल सकते हैं कि पहले कोई कुंजी मौजूद है या नहीं।

पायथन KeyError को कैसे हैंडल करें

क्या आपको अभी-अभी KeyError द्वारा बधाई दी गई है? चिंता मत करो! जब एक KeyError उठाया जाता है, तो इसका मतलब है कि आप किसी ऐसे शब्दकोश के अंदर एक कुंजी तक पहुंचने का प्रयास कर रहे हैं जो मौजूद नहीं है। जब आप जानते हैं कि कैसे इस त्रुटि को सौंपना और ठीक करना आसान है।

KeyErrors को एक कोशिश का उपयोग करके नियंत्रित किया जा सकता है ... ब्लॉक को छोड़कर, "इन" कीवर्ड का उपयोग करके, या इंडेक्सिंग का उपयोग करके अग्रिम रूप से एक कुंजी की जांच करके।

इस गाइड में, हम इस बारे में बात करने जा रहे हैं कि Python KeyErrors क्या हैं और उन्हें क्यों उठाया जाता है। हम एक त्रुटि के उदाहरण और इसे ठीक करने के तरीके के बारे में जानेंगे ताकि आप जान सकें कि भविष्य में KeyErrors को कैसे संबोधित किया जाए।

आइए शुरू करें!

पायथन KeyError क्या है?

Python KeyError तब होता है जब आप किसी ऐसे डिक्शनरी में किसी आइटम तक पहुँचने का प्रयास करते हैं जो इंडेक्सिंग सिंटैक्स का उपयोग करके मौजूद नहीं है। यह त्रुटि इसलिए उठाई जाती है क्योंकि पायथन किसी ऐसे आइटम के लिए मान वापस नहीं कर सकता जो किसी शब्दकोश में मौजूद नहीं है।

पायथन डिक्शनरी की-वैल्यू पेयर का एक सेट है जो कर्ली ब्रेसिज़ ({}) में स्टोर किया जाता है:

raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}

चाबियाँ "नाम", "कीमत" और "रैम" हैं। शब्दकोश में कोलन के सामने कुंजियाँ दिखाई देती हैं।

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

आइए देखें कि यदि हम अपने शब्दकोश में यूएसबी पोर्ट की संख्या को पुनः प्राप्त करने का प्रयास करते हैं तो क्या होता है:

print(raspberry_pi["usb_ports"])

हमारा कोड लौटाता है:

KeyError: 'usb_ports'

यह त्रुटि हमें बताती है कि हमारे द्वारा निर्दिष्ट कुंजी मौजूद नहीं है। इस मामले में, लापता कुंजी "usb_ports" है।

कुंजी त्रुटि पायथन:समाधान

पायथन डिक्शनरी KeyError को संभालने के लिए आप यह कर सकते हैं:

  • इंडेक्सिंग का उपयोग करके पहले से एक कुंजी की जांच करें
  • कुंजी की जांच के लिए "इन" कीवर्ड का उपयोग करें
  • कोशिश करें...ब्लॉक को छोड़कर।

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() विधि का उपयोग करता है। कोई मान इस कुंजी नाम से मेल नहीं खाता। प्राप्त () विधि हमारे द्वारा निर्दिष्ट डिफ़ॉल्ट मान लौटाती है, जो "उपलब्ध नहीं" है।

इंडेक्सिंग का उपयोग करके अग्रिम में कुंजी की जांच करें

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" स्टेटमेंट निष्पादित होगा। यदि हमारी कुंजी मौजूद नहीं है, तो "अन्य" कथन निष्पादित होगा।

आइए हमारे रास्पबेरी पाई के लिए रैम का पता लगाने की कोशिश करें:

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 लौटाता।

कोशिश का उपयोग करना...ब्लॉक को छोड़कर

एक पायथन कोशिश ... ब्लॉक को छोड़कर कोड की एक पंक्ति चलाने की कोशिश करेगा। यदि कोड की वह पंक्ति नहीं चलाई जा सकती, तो हमारा कोड आपके द्वारा बताए गए अपवादों के अनुसार एक कस्टम त्रुटि उत्पन्न करेगा।

हम एक कोशिश का उपयोग कर सकते हैं ... एक त्रुटि के अस्तित्व को निर्धारित करने के लिए ब्लॉक को छोड़कर और एक अप्रत्याशित KeyError को हमारे पायथन प्रोग्राम की मदद करने से रोक सकते हैं।

आइए एक कोशिश का उपयोग करके अपने कंप्यूटर उदाहरण के लिए एक कस्टम त्रुटि को परिभाषित करें...ब्लॉक को छोड़कर:

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.")

हम रास्पबेरी पाई कंप्यूटर के बारे में जानकारी के एक विशेष टुकड़े को कंसोल पर प्रिंट करने का प्रयास करने के लिए ब्लॉक को छोड़कर एक कोशिश का उपयोग करते हैं। यदि हमारा कोड "कोशिश" ब्लॉक में कहीं भी एक KeyError उठाता है, तो हमारा कोड "छोड़कर" ब्लॉक की सामग्री को निष्पादित करता है।

इसका मतलब यह है कि हर बार एक KeyError उठाया जाता है, "यह जानकारी उपलब्ध नहीं है" कंसोल पर मुद्रित होता है। आइए कंप्यूटर के नाम के बारे में जानने की कोशिश करें:

What information would you like to retrieve (name, price, RAM)? name
The name for this computer is Raspberry Pi 4.

आइए, अब कंप्यूटर के यूएसबी पोर्ट की उपलब्धता के बारे में जानने की कोशिश करते हैं:

What information would you like to retrieve (name, price, RAM)? USB
This information is not available.

हमारा कोड हमारे "कोशिश" ब्लॉक के अंदर एक KeyError उठाता है। यह हमारे कोड को कोड के "छोड़कर" ब्लॉक को निष्पादित करने का कारण बनता है।

इन का उपयोग करके अग्रिम रूप से कुंजी की जांच करें

"इन" कीवर्ड पायथन के सदस्यता ऑपरेटरों में से एक है। यह जांचता है कि कोई आइटम मानों की सूची में है या नहीं। आप "इन" कीवर्ड का उपयोग यह जांचने के लिए कर सकते हैं कि कोई कुंजी शब्दकोश के अंदर है या नहीं।

यह प्रोग्राम जाँच करेगा कि क्या कंसोल पर इसके मान को प्रिंट करने से पहले कोई कुंजी मौजूद है:

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" स्टेटमेंट चलेगा। अन्यथा, "अन्य" कथन चलेगा। आइए कंप्यूटर के 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 उठाया जाता है। एक कुंजी त्रुटि को हल करने के लिए, आप इसका उपयोग करने से पहले एक कुंजी की जांच कर सकते हैं और केवल तभी इसका उपयोग कर सकते हैं जब कुंजी मौजूद हो। आप एक कोशिश का उपयोग कर सकते हैं ... एक महत्वपूर्ण त्रुटि को संभालने के लिए ब्लॉक को छोड़कर।

पायथन प्रोग्रामिंग भाषा कैसे सीखें, इस बारे में सलाह के लिए, हमारी व्यापक देखें कि पायथन कैसे सीखें गाइड। आपको इस गाइड में शीर्ष शिक्षण संसाधनों, पुस्तकों और पाठ्यक्रमों के लिंक मिलेंगे।


  1. हम पायथन में डिक्शनरी को कैसे परिभाषित करते हैं?

    डिक्शनरी ऑब्जेक्ट की-वैल्यू पेयर का एक अनियंत्रित संग्रह है, जिसे कॉमा से अलग किया जाता है और घुंघराले कोष्ठक में संलग्न किया जाता है। कुंजी के साथ मूल्य का जुड़ाव :उनके बीच प्रतीक द्वारा चिह्नित किया जाता है। >>> D1={'a':1,'b':2,'c':3} कुंजी शब्दकोश ऑब्जेक्ट में केव

  1. कैसे जांचें कि पाइथन शब्दकोश में कोई कुंजी मौजूद है या नहीं?

    आप इन ऑपरेटर का उपयोग करके जांच सकते हैं कि पायथन डिक्शनरी में कोई कुंजी मौजूद है या नहीं। में ऑपरेटर डिक्शनरी के खिलाफ कुंजी से मेल खाता है और कुंजी की उपस्थिति की जांच करता है। उदाहरण my_dict = {'name': 'TutorialsPoint', 'time': '15 years', 'location': '

  1. कैसे एक अजगर शब्दकोश से एक कुंजी निकालने के लिए?

    पायथन का डेल कीवर्ड किसी भी वस्तु का बहुत अधिक उपयोग किया जाता है। शब्दकोश से किसी विशेष आइटम को हटाने के लिए, डेल स्टेटमेंट के लिए मुख्य क्लॉज प्रदान करें >>> D1 = {1: a, 2: b, 3: c, x: 1, y: 2, z: 3} >>> del D1[x] >>> D1 {1: a, 2: b, 3: c, y: 2, z: 3} पॉप () विधि द्वा