पुनरावृत्तीय शब्दकोश संशोधन
किसी शब्दकोश पर पुनरावृत्ति करते समय उसमें से वस्तुओं को हटाना आम बात है। हालाँकि, यह ऑपरेशन मूल रूप से पायथन में समर्थित नहीं है।
किसी शब्दकोश को दोहराते समय उसे संशोधित करने से त्रुटियाँ हो सकती हैं। उदाहरण के लिए, आपके द्वारा प्रदान किया गया कोड स्निपेट इस त्रुटि के साथ Python 3 में विफल हो सकता है:
RuntimeError: dictionary changed size during iteration.
Python 3 Solution
पायथन 3 में, समाधान यह है कि शब्दकोश से कुंजियों की एक सूची बनाई जाए और उसके बजाय उस सूची को दोहराया जाए। यहाँ एक उदाहरण है:
# Python 3 or higher
for k in list(mydict.keys()):
if mydict[k] == 3:
del mydict[k]
यह दृष्टिकोण काम करता है क्योंकि एक सूची अपरिवर्तनीय है और शब्दकोश में परिवर्तन से प्रभावित नहीं होगी।
पायथन 2 समाधान
पायथन 2 में, key() विधि एक पुनरावर्तक लौटाती है, जिसे पुनरावृत्ति के दौरान संशोधित नहीं किया जा सकता है। शब्दकोश को संशोधित करने के लिए, आप निम्नलिखित दृष्टिकोण का उपयोग कर सकते हैं:
# Python 2
for k, v in mydict.items():
if v == 3:
del mydict[k]
पायथन 2 में, आप पुनरावर्तक को एक सूची में भी बदल सकते हैं:
for k in mydict.keys():
if mydict[k] == 3:
del mydict[k]
वैकल्पिक दृष्टिकोण
वैकल्पिक रूप से, आप पुनरावृत्ति करते समय शब्दकोश से आइटम हटाने के लिए पॉप() विधि का उपयोग कर सकते हैं:
for k in list(mydict.keys()):
if k == 3:
mydict.pop(k)
ध्यान दें कि यह दृष्टिकोण अधिक कुशल है क्योंकि यह कोई अतिरिक्त सूची नहीं बनाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3