शब्दकोश पुनरावृत्ति के दौरान आइटम हेरफेर की सुरक्षा की खोज
पायथन शब्दकोश (तानाशाही) पर पुनरावृत्ति का कार्य, जबकि इसकी सामग्री को संशोधित किया जा सकता है एक पेचीदा व्यवसाय. कुछ डेवलपर्स को आश्चर्य हो सकता है कि क्या यह प्रथा अच्छी तरह से परिभाषित और सुरक्षित है। पुनरावृत्ति करते समय निर्देश के मौजूदा सूचकांक पर मूल्य। हालाँकि, डिक्ट में नए आइटम सम्मिलित करना संभव नहीं है।
आइटम हटाने में समस्या
विशेष रूप से, पुनरावृत्ति के दौरान डिक्ट से आइटम हटाना समस्याग्रस्त हो सकता है। इसका कारण पायथन में तानाशाही पुनरावृत्ति के अंतर्निहित कार्यान्वयन में निहित है। इसका मतलब यह है कि पुनरावृत्ति के दौरान निर्देश में किया गया कोई भी संशोधन पुनरावर्तक के व्यवहार को प्रभावित करेगा।
उदाहरण: एक आइटम हटाना
निम्नलिखित कोड पर विचार करें:
d.iteritems() में k, v के लिए: del d[f(k)]
जब del कथन निष्पादित होता है, तो यह निर्देश से f(k) से संबंधित आइटम को हटा देता है। हालाँकि, चूंकि पुनरावर्तक अभी भी संशोधित निर्देश का संदर्भ रखता है, इसलिए उसके लिए बाद में लूप में हटाए गए आइटम पर जाने का प्रयास करना संभव है। इससे RuntimeError हो सकती है।
Safeguarded Iterationfor 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