पायथन 2.7 बनाम पायथन 3.3 में शब्दकोश क्रम: परिवर्तन क्यों?
पायथन 2.7 में, शब्दकोश कुंजियों का क्रम मनमाना लेकिन सुसंगत था . हालाँकि, यह व्यवहार पायथन 3.3 में बदल गया, जहाँ vars() जैसी विधियों से प्राप्त कुंजियों का क्रम गैर-नियतात्मक प्रतीत होता है। पायथन 3.3 में। कुछ सुरक्षा कमजोरियों को रोकने के लिए फिक्स ने हैश रैंडमाइजेशन की शुरुआत की। परिणामस्वरूप, शब्दकोशों और सेटों का पुनरावृत्ति क्रम अप्रत्याशित हो गया।
पायथन 3.6 में, तानाशाही वर्ग के लिए एक नया कार्यान्वयन पेश किया गया था जो सम्मिलन क्रम को संरक्षित करता है। नतीजतन, पायथन 3.7 के अनुसार, अब शब्दकोशों के लिए आदेश-संरक्षित व्यवहार की गारंटी है।
कुछ उपयोग मामलों में अप्रत्याशित स्थिरतागैर-नियतात्मक आदेश के बावजूद, वहाँ हैं ऐसे मामले जहां एक सुसंगत आदेश बनाए रखा जाता है। उदाहरण के लिए:
list({str(i): i for i inrange(10)}.keys())
list({str(i): i for i in range(10)}.keys())
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9 ']
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3