शब्दकोश विचार अनिवार्य रूप से उनके नाम क्या कहते हैं: विचार एक शब्दकोश की कुंजी और मान (या आइटम) पर की तरह खिड़की की तरह हैं।
>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
>>> keys = dishes.keys()
>>> values = dishes.values()
>>> # view objects are dynamic and reflect dict changes
>>> del dishes['eggs']
>>> keys # No eggs anymore!
dict_keys(['sausage', 'bacon', 'spam'])
>>> values # No eggs value (2) anymore!
dict_values([1, 1, 500])
(अजगर 2 बराबर dishes.viewkeys()
और dishes.viewvalues()
उपयोग करता है।)
इस उदाहरण देखा गया की गतिशील चरित्र दिखाता है:: कुंजी देखने नहीं है यहां अजगर 3 के लिए official documentation से एक अंश है समय पर दिए गए बिंदु पर चाबियों की एक प्रति, बल्कि एक साधारण विंडो जो आपको चाबियाँ दिखाती है; अगर वे बदल जाते हैं, तो आप विंडो के माध्यम से जो भी देखते हैं वह भी बदल जाता है। यह सुविधा कुछ परिस्थितियों में उपयोगी हो सकती है (उदाहरण के लिए, किसी भी प्रोग्राम की कई हिस्सों में कुंजियों पर एक दृश्य के साथ काम कर सकते हैं, प्रत्येक बार जब आवश्यक हो तो चाबियों की वर्तमान सूची को पुन: गणना करने के बजाय)।
एक लाभ यह कुंजी स्मृति का केवल एक छोटे और निश्चित राशि का उपयोग करता है और आवश्यकता है प्रोसेसर समय का एक छोटा सा और निश्चित राशि, के रूप में वहाँ की एक सूची का कोई रचना है, कि कहते हैं पर, देख है चाबियाँ (पाइथन 2, दूसरी तरफ, अक्सर अनावश्यक रूप से एक नई सूची बनाती है, जैसा कि राजेंद्रन टी द्वारा उद्धृत किया गया है, जो सूची की लंबाई के अनुपात में स्मृति और समय लेता है)। खिड़की के समानता को जारी रखने के लिए, यदि आप दीवार के पीछे एक परिदृश्य देखना चाहते हैं, तो आप बस इसमें खुलते हैं (आप एक खिड़की बनाते हैं); एक सूची में चाबियों की प्रतिलिपि बनाने के बजाय आपकी दीवार पर परिदृश्य की एक प्रति चित्रित करने के अनुरूप होगा- प्रतिलिपि समय, स्थान लेती है, और खुद को अपडेट नहीं करती है।
सारांशित करने के लिए, आपके शब्दकोश पर विचार ... दृश्य (विंडोज़) हैं, जो इसे बदलने के बाद भी शब्दकोश की सामग्री दिखाते हैं। वे सूचियों से भिन्न सुविधाओं की पेशकश करते हैं: कुंजियों की एक सूची में एक समय पर दिए गए शब्द कुंजी के की प्रतिलिपि होती है, जबकि दृश्य गतिशील होता है और प्राप्त करने के लिए बहुत तेज होता है, क्योंकि इसे किसी भी प्रतिलिपि बनाने की आवश्यकता नहीं होती है बनाए जाने के लिए डेटा (कुंजी या मान)।
+1। ठीक है, यह कुंजी की आंतरिक सूची तक सीधे पहुंचने से अलग कैसे है? क्या वह तेज़, धीमा है? अधिक मेमोरी कुशल? वर्जित ? यदि आप इसे पढ़ और संपादित कर सकते हैं, तो यह बिल्कुल इस सूची का संदर्भ रखने जैसा ही लगता है। –
धन्यवाद। बात यह है कि विचार * आपकी "कुंजी की आंतरिक सूची" तक पहुंच है (ध्यान दें कि यह "कुंजी की सूची" एक पायथन सूची नहीं है, हालांकि, लेकिन यह बिल्कुल एक दृश्य है)। दृश्य पाइथन 2 की कुंजी (या मान या आइटम) की सूचियों की तुलना में अधिक मेमोरी कुशल हैं, क्योंकि वे कुछ भी कॉपी नहीं करते हैं; वे वास्तव में "चाबियों की सूची का संदर्भ" की तरह हैं (ध्यान दें कि "एक सूची का संदर्भ" वास्तव में केवल पाइथन में एक सूची कहा जाता है, क्योंकि सूचियां उत्परिवर्तनीय वस्तुएं होती हैं)। यह भी ध्यान रखें कि आप सीधे दृश्यों को संपादित नहीं कर सकते हैं: इसके बजाय, आप अभी भी शब्दकोश संपादित करते हैं, और विचार तुरंत आपके परिवर्तनों को प्रतिबिंबित करते हैं। – EOL
ठीक है, मैं अभी तक कार्यान्वयन पर स्पष्ट नहीं हूं, लेकिन अब तक का सबसे अच्छा जवाब है। –