2015-02-27 23 views
5

collections.OrderedDict प्रलेखन एक dict एक OrderedDict एक के रूप मेंआदेश दिया गया आदेश: मूल्य भी आदेश दिए गए हैं?

है कि आदेश है कि कुंजी पहले

डाला गया तो

for k in dict: 
    ... 

for k in dict.keys(): 
    ... 

के आदेश पूर्वानुमान है याद है वर्णन करता है।

हालांकि, यह मूल्यों के बारे में कुछ नहीं कहा। यदि मुझे केवल मानों पर पुन: प्रयास करने की आवश्यकता है, तो परिणाम ऑर्डरिंग-इन-डालने का भी सम्मान करेंगे?

for v in dict.values(): 
    ... 

कुछ त्वरित परीक्षण CPython में यहां से पता चला कि मामला है, लेकिन वह सिर्फ वर्तमान कार्यान्वयन (मैं किसी भी अन्य परीक्षण नहीं किया) के साथ coinicidental हो सकता है।

उत्तर

7

हां, keys() और values() द्वारा सूचियों को सभी डिक्ट्स, not just in ordered ones में संबंधित ऑर्डर में व्यवस्थित किया गया है। (क्रम सामान्य dicts के लिए मनमाने ढंग से है, लेकिन यह , keys(), values() और items() के लिए एक ही मनमाना आदेश जब तक dict इस बीच में संशोधित किया गया है।)

2

हाँ, वे के रूप में एक ही क्रम में हल कर रहे हैं चाबियाँ हैं यह सभी dict कार्यान्वयन के साथ समान है।

कुंजी और मूल्यों एक मनमाना आदेश जो गैर यादृच्छिक है, अजगर कार्यान्वयन में भिन्न होती है, और सम्मिलन और विलोपन के शब्दकोश के इतिहास पर निर्भर करता है में से अधिक दोहराया जाता है। चाबियाँ, मूल्यों और आइटम विचारों शब्दकोश में कोई हस्तक्षेप संशोधनों के साथ खत्म हो गया दोहराया रहे हैं, तो आइटम के आदेश सीधे अनुरूप होगा। यह अनुमति देता है (value, key) जोड़े के निर्माण zip() का उपयोग कर: pairs = zip(d.values(), d.keys())। एक ही सूची बनाने का एक और तरीका pairs = [(v, k) for (k, v) in d.items()] है।

https://docs.python.org/3/library/stdtypes.html#dict-views

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