पायथन 3.6 के बाद से, मानक dict
प्रकार डिफ़ॉल्ट रूप से प्रविष्टि क्रम बनाए रखता है।
परिभाषित
d = {'ac':33, 'gw':20, 'ap':102, 'za':321, 'bs':10}
स्रोत कोड में सूचीबद्ध क्रम में कुंजियों के साथ एक शब्दकोश में परिणाम होगा।
यह विरल हैश तालिका के लिए पूर्णांक के साथ एक सरल सरणी का उपयोग करके प्राप्त किया गया था, जहां उन पूर्णांकों को एक और सरणी में अनुक्रमित किया जाता है जो कुंजी-मूल्य जोड़े (प्लस गणना हैश) को संग्रहीत करता है। वह बाद वाली सरणी सिर्फ वस्तुओं को प्रविष्टि क्रम में संग्रहीत करने के लिए होती है, और संपूर्ण संयोजन वास्तव में पायथन 3.5 और उससे पहले के कार्यान्वयन से कम मेमोरी का उपयोग करता है। देखें रेमंड Hettinger द्वारा मूल विचार पोस्ट जानकारी के लिए।
3.6 में यह अभी भी एक कार्यान्वयन विस्तार माना जाता था; पायथन 3.6 प्रलेखन में नया क्या है देखें :
इस नए कार्यान्वयन के आदेश-संरक्षण पहलू को एक कार्यान्वयन विवरण माना जाता है और इस पर भरोसा नहीं किया जाना चाहिए (यह भविष्य में बदल सकता है, लेकिन भाषा की विश्वसनीयता बदलने से पहले कुछ रिलीज के लिए भाषा में इस नए तानाशाही कार्यान्वयन के लिए वांछित है सभी वर्तमान और भविष्य के पायथन कार्यान्वयन के लिए ऑर्डर-प्रोटेक्टिंग शब्दार्थों को अनिवार्य करना; यह भाषा के पुराने संस्करणों के साथ पीछे-संगतता को बनाए रखने में मदद करता है जहां यादृच्छिक पुनरावृत्ति क्रम अभी भी प्रभाव में है, जैसे कि पायथन 3.5)।
पायथन 3.7 इस कार्यान्वयन विस्तार को एक भाषा विनिर्देश में बढ़ाता है , इसलिए अब यह अनिवार्य है कि dict
उस संस्करण या नए के साथ संगत सभी पायथन कार्यान्वयन में आदेश को संरक्षित करता है। BDFL द्वारा उच्चारण देखें ।
आप अभी भी कुछ मामलों में collections.OrderedDict()
कक्षा का उपयोग करना चाह सकते हैं , क्योंकि यह मानक dict
प्रकार के शीर्ष पर कुछ अतिरिक्त कार्यक्षमता प्रदान करता है । जैसे कि प्रतिवर्ती होने के नाते (यह दृश्य वस्तुओं तक फैली हुई है ), और पुन: समर्थन ( move_to_end()
विधि के माध्यम से )।