पाइथन 3.6 के रूप में अंतर्निहित तानाशाही का आदेश दिया जाएगा
अच्छी खबर है, इसलिए ओपी के मूल उपयोग के मामले में एक स्ट्रिंग से एक अद्वितीय स्ट्रिंग आईडी के साथ डेटाबेस से पुनर्प्राप्त मैपिंग जोड़े को मानों और संख्यात्मक मानों के रूप में एक अंतर्निहित पायथन v3.6 + तानाशाही में है, अब सम्मिलित आदेश का सम्मान करना चाहिए।
यदि डेटाबेस क्वेरी से परिणामी दो कॉलम तालिका अभिव्यक्तियाँ कहती हैं जैसे:
SELECT a_key, a_value FROM a_table ORDER BY a_value;
दो पायथन टुपल्स, k_seq और v_seq (संख्यात्मक सूचकांक द्वारा संरेखित) और पाठ्यक्रम की समान लंबाई के साथ संग्रहीत किया जाएगा, फिर:
k_seq = ('foo', 'bar', 'baz')
v_seq = (0, 1, 42)
ordered_map = dict(zip(k_seq, v_seq))
बाद में आउटपुट की अनुमति दें:
for k, v in ordered_map.items():
print(k, v)
इस मामले में उपज (नए अजगर के लिए 3.6+ बिल्ट-इन तानाशाह!):
foo 0
bar 1
baz 42
v के प्रति समान क्रम में।
जहां पायथन 3.5 मेरी मशीन पर स्थापित होता है वहां वर्तमान में इसकी पैदावार होती है:
bar 1
foo 0
baz 42
विवरण:
जैसा कि 2012 में रेमंड हेटिंगर द्वारा प्रस्तावित किया गया था (विषय पर "तेज पुनरावृति के साथ अधिक कॉम्पैक्ट शब्दकोशों" के साथ अजगर-देव पर cf. मेल ) और अब (2016 में) विक्टर स्टिनर द्वारा एक मेल में अजगर के लिए अजगर-देव के लिए एक मेल की घोषणा की गई "पायथन 3.6 तानाशाह। कॉम्पैक्ट और एक निजी संस्करण हो जाता है, और कीवर्ड 27350 " समस्या के कार्यान्वयन / कार्यान्वयन के कारण " कॉम्पैक्ट हो जाते हैं और "आदेश दिया जाता है" पायथन 3.6 में अब हम सम्मिलित आदेश को बनाए रखने के लिए एक अंतर्निहित तानाशाही का उपयोग करने में सक्षम होंगे !!
उम्मीद है कि यह पहले चरण के रूप में एक पतली परत ऑर्डरडेड डिसीजन को लागू करेगा। जैसा कि @ JimFasarakis-Hilliard ने संकेत दिया है, कुछ भविष्य में ऑर्डर किए गए प्रकार के लिए भी मामलों का उपयोग करते हैं। मुझे लगता है कि बड़े पैमाने पर पायथन समुदाय सावधानीपूर्वक निरीक्षण करेगा, अगर यह समय की कसौटी पर खड़ा होगा, और अगले कदम क्या होंगे।
स्थिर आदेश द्वारा खोली गई संभावनाओं को याद न करने के लिए हमारी कोडिंग आदतों पर पुनर्विचार करने का समय:
- कीवर्ड तर्क और
- (इंटरमीडिएट) तानाशाही भंडारण
पहला क्योंकि यह कुछ मामलों में कार्यों और विधियों के कार्यान्वयन में प्रेषण को आसान बनाता है।
दूसरा, क्योंकि यह dict
पाइपलाइनों के प्रसंस्करण में मध्यवर्ती भंडारण के रूप में अधिक आसानी से उपयोग करने के लिए प्रोत्साहित करता है ।
रेमंड हेटिंगर ने कृपया अपने सैन फ्रांसिस्को पायथन मीटअप ग्रुप प्रेजेंटेशन 2016-DEC-08 से " द टेक बिहाइंड पायथन 3.6 डिक्शनर्स " - यह समझाते हुए प्रलेखन प्रदान किया ।
और शायद कुछ स्टैक ओवरफ्लो उच्च सजाए गए प्रश्न और उत्तर पृष्ठ इस जानकारी के वेरिएंट प्राप्त करेंगे और कई उच्च गुणवत्ता वाले उत्तर के लिए प्रति संस्करण भी आवश्यकता होगी।
कैविट एम्प्टर (लेकिन 2017-12-15 के अपडेट को भी देखें):
जैसा कि @ajcr सही रूप से नोट करता है: "इस नए कार्यान्वयन का आदेश-संरक्षण पहलू एक कार्यान्वयन विवरण माना जाता है और इस पर भरोसा नहीं किया जाना चाहिए।" ( whatsnew36 से ) नाइट पिकिंग नहीं, लेकिन प्रशस्ति पत्र थोड़ा निराशावादी ;-) कट गया था। यह जारी है "(यह भविष्य में बदल सकता है, लेकिन सभी मौजूदा और भविष्य के पायथन कार्यान्वयनों के लिए ऑर्डर-प्रोटेक्टिंग शब्दार्थों को अनिवार्य करने के लिए भाषा की युक्ति को बदलने से पहले कुछ रिलीज के लिए भाषा में इस नए तानाशाही कार्यान्वयन के लिए वांछित है;" भाषा के पुराने संस्करणों के साथ पीछे-संगतता को संरक्षित करने में मदद करता है जहां यादृच्छिक पुनरावृत्ति क्रम अभी भी प्रभाव में है, उदाहरण के लिए पायथन 3.5)। "
इसलिए कुछ मानव भाषाओं (जैसे जर्मन) में, उपयोग भाषा को आकार देता है, और अब व्हाट्सएवन 36 में ... घोषित किया गया है ।
2017-12-15 अपडेट करें:
अजगर-देव सूची में एक मेल में , गुइडो वैन रोसुम ने घोषणा की:
इसे ऐसा बनाओ। "निर्णय प्रविष्टि आदेश रखता है" सत्तारूढ़ है। धन्यवाद!
इसलिए, संस्करण 3.6 CPython साइड-इफ़ेक्ट ऑफ़ डिसकस इन्सर्टन ऑर्डरिंग अब लैंग्वेज स्पेक (और अब केवल कार्यान्वयन डिटेल नहीं) का हिस्सा बन रहा है। collections.OrderedDict
चर्चा के दौरान रेमंड हेटिंगर द्वारा याद दिलाए जाने के लिए उस मेल थ्रेड में कुछ विशिष्ट डिजाइन लक्ष्य भी सामने आए ।