"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में पुनरावृत्ति करते समय शब्दकोश से आइटम को सुरक्षित रूप से कैसे हटाएं?

पायथन में पुनरावृत्ति करते समय शब्दकोश से आइटम को सुरक्षित रूप से कैसे हटाएं?

2024-11-12 को प्रकाशित
ब्राउज़ करें:689

How to Safely Delete Items from a Dictionary While Iterating in Python?

पुनरावृत्तीय शब्दकोश संशोधन

किसी शब्दकोश पर पुनरावृत्ति करते समय उसमें से वस्तुओं को हटाना आम बात है। हालाँकि, यह ऑपरेशन मूल रूप से पायथन में समर्थित नहीं है।

किसी शब्दकोश को दोहराते समय उसे संशोधित करने से त्रुटियाँ हो सकती हैं। उदाहरण के लिए, आपके द्वारा प्रदान किया गया कोड स्निपेट इस त्रुटि के साथ 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