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

क्या पायथन डिक्शनरी को दोहराते समय उसे संशोधित करना सुरक्षित है?

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

Is It Safe to Modify a Python Dictionary While Iterating Over It?

शब्दकोश पुनरावृत्ति के दौरान आइटम हेरफेर की सुरक्षा की खोज

पायथन शब्दकोश (तानाशाही) पर पुनरावृत्ति का कार्य, जबकि इसकी सामग्री को संशोधित किया जा सकता है एक पेचीदा व्यवसाय. कुछ डेवलपर्स को आश्चर्य हो सकता है कि क्या यह प्रथा अच्छी तरह से परिभाषित और सुरक्षित है। पुनरावृत्ति करते समय निर्देश के मौजूदा सूचकांक पर मूल्य। हालाँकि, डिक्ट में नए आइटम सम्मिलित करना संभव नहीं है।

आइटम हटाने में समस्या

विशेष रूप से, पुनरावृत्ति के दौरान डिक्ट से आइटम हटाना समस्याग्रस्त हो सकता है। इसका कारण पायथन में तानाशाही पुनरावृत्ति के अंतर्निहित कार्यान्वयन में निहित है। इसका मतलब यह है कि पुनरावृत्ति के दौरान निर्देश में किया गया कोई भी संशोधन पुनरावर्तक के व्यवहार को प्रभावित करेगा।

उदाहरण: एक आइटम हटाना

निम्नलिखित कोड पर विचार करें:

d.iteritems() में k, v के लिए: del d[f(k)]

जब del कथन निष्पादित होता है, तो यह निर्देश से f(k) से संबंधित आइटम को हटा देता है। हालाँकि, चूंकि पुनरावर्तक अभी भी संशोधित निर्देश का संदर्भ रखता है, इसलिए उसके लिए बाद में लूप में हटाए गए आइटम पर जाने का प्रयास करना संभव है। इससे RuntimeError हो सकती है।

Safeguarded Iteration

for k, v in d.iteritems():
    del d[f(k)]

k, v के लिए d.copy().items() में: del d[f(k)]

प्रतिलिपि पर पुनरावृत्ति करने से, अंतर्निहित निर्देश अछूता रहता है, जिससे पुनरावृत्ति त्रुटियों की संभावना समाप्त हो जाती है।

निष्कर्ष

for k, v in d.copy().items():
    del d[f(k)]
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3