2017-11-03 31 views
6

सरल प्रश्न:पायथन शब्दकोश शब्दकोष असाइन करना: अर्थशास्त्र की गारंटी है?

Python 2.6.6 (r266:84292, Aug 9 2016, 06:11:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> d = {'foo':1,'foo':2} 
>>> print d 
{'foo': 2} 
>>> d = {'foo':2,'foo':1} 
>>> print d 
{'foo': 1} 

तो ऐसा लगता है कि यह दूसरी चाबी/जोड़ी है कि इस्तेमाल किया, कम से कम इस विशेष अजगर संस्करण के लिए है अगर मैं एक चर करने के लिए एक नकली चाबी के साथ एक शब्दकोश शाब्दिक आवंटित।

क्या यह व्यवहार गारंटी है?

+1

डुप्लीकेट: https://stackoverflow.com/questions/39678672/is-a-python-dict-comprehension-always-last-wins-if-there-are-duplicate-keys – lqez

उत्तर

8
से

Dictionary displays documentation:

तो कुंजी/गृहीत जोड़े की एक अल्पविराम से अलग अनुक्रम दिया जाता है, वे सही के लिए छोड़ दिया शब्दकोश की प्रविष्टियों को परिभाषित करने से मूल्यांकन किया जाता है: प्रत्येक कुंजी वस्तु प्रयोग किया जाता है संबंधित डेटाम को स्टोर करने के लिए शब्दकोश में एक कुंजी के रूप में। इसका मतलब है कि आप कुंजी/डेटाम सूची में एक ही कुंजी को कई बार निर्दिष्ट कर सकते हैं, और उस कुंजी के लिए अंतिम शब्दकोश का मूल्य अंतिम दिया जाएगा।

(बोल्ड जोर मेरा)।

तो हाँ, इसकी गारंटी है। सभी पायथन कार्यान्वयनों का पालन करना चाहिए, उपरोक्त विनिर्देश से विचलन एक बग होगा।

पुराने पायथन संस्करण प्रलेखन में हमेशा अंतिम वाक्य शामिल नहीं होता है, लेकिन मूल्यांकन का क्रम हमेशा स्पष्ट होता है।

+0

पायथन 2.6 के लिए पाठ (जो ओपी का उपयोग करता है) थोड़ा अलग है: https://docs.python.org/2.6/reference/expressions.html#dictionary- प्रदर्शित करता है –

+0

@StefanPochmann: 2 में व्यवहार अलग नहीं है, हालांकि एक बग था जहां मूल्य था अभिव्यक्ति का मूल्यांकन मुख्य अभिव्यक्ति से पहले किया गया था। –

+0

@StefanPochmann: [क्या एक पाइथन ताना शाब्दिक मूल्यांकन किया जाएगा जिस क्रम में लिखा गया है?] (// stackoverflow.com/q/28156687) –

संबंधित मुद्दे