यह आसान है। पहली बात यह है कि आपको पाइथन दुभाषिया के डिजाइन को समझना है। यह मूल रूप से सभी चरों के लिए स्मृति आवंटित नहीं करता है यदि किसी भी दो या अधिक चर के समान मूल्य है तो यह उस मान पर नक्शा लगाता है।जब मैं एक नया वेरिएबल ई बना सकते हैं और एक मूल्य (स्टोर
के कोड उदाहरण के लिए चलते हैं,
In [6]: a = 10
In [7]: id(a)
Out[7]: 10914656
In [8]: b = 10
In [9]: id(b)
Out[9]: 10914656
In [10]: c = 11
In [11]: id(c)
Out[11]: 10914688
In [12]: d = 21
In [13]: id(d)
Out[13]: 10915008
In [14]: e = 11
In [15]: id(e)
Out[15]: 10914688
In [16]: e = 21
In [17]: id(e)
Out[17]: 10915008
In [18]: e is d
Out[18]: True
In [19]: e = 30
In [20]: id(e)
Out[20]: 10915296
ऊपर उत्पादन, चर ए और बी के शेयरों में एक ही स्मृति, ग और घ से अलग मेमोरी है 11) जो वैरिएबल सी में पहले से मौजूद है, इसलिए यह उस मेमोरी लोकेशन में मैप किया गया है और जब मैं वैरिएबल ई से 21 में मौजूद मान को बदलता हूं तो एक नई मेमोरी नहीं बनाता है जो पहले से ही वेरिएबल डी में मौजूद है, इसलिए अब चर और ई एक ही स्मृति स्थान साझा करें। अंत में, मैं वैरिएबल ई से 30 में मान बदलता हूं जो किसी भी अन्य चर में संग्रहीत नहीं होता है, इसलिए यह ई के लिए एक नई मेमोरी बनाता है।
इसलिए कोई भी वैरिएबल जो समान मान वाला है वह स्मृति साझा करता है।
Not for list and dictionary objects
चलिए आपके प्रश्न पर आते हैं।
जब एकाधिक कुंजियों का एक ही मूल्य होता है तो सभी समान स्मृति साझा करते हैं, इसलिए आप जिस चीज की अपेक्षा करते हैं वह पहले से ही पाइथन में है।
आप बस इस
In [49]: dictionary = {
...: 'k1':1,
...: 'k2':1,
...: 'k3':2,
...: 'k4':2}
...:
...:
In [50]: id(dictionary['k1'])
Out[50]: 10914368
In [51]: id(dictionary['k2'])
Out[51]: 10914368
In [52]: id(dictionary['k3'])
Out[52]: 10914400
In [53]: id(dictionary['k4'])
Out[53]: 10914400
ऊपर उत्पादन से की तरह उपयोग कर सकते हैं, कुंजी k1 और k2 एक ही पते से मैप मूल्य एक स्मृति में केवल एक बार संग्रहीत है जो कई प्रमुख एकल मान शब्दकोश है जिसका मतलब है यह वही चीज है जो आप चाहते हैं। : पी
स्रोत
2017-09-06 06:00:49
क्या आपका मतलब है कि आप पहली प्रविष्टि को _either_ ''a'' या' 'b''' से एक्सेस करना चाहते हैं? 'डिक्शनरी [' ए ']' और 'डिक्शनरी [' बी '] की तरह' दोनों रिटर्न '1'? –
जैसा कि आप कहते हैं, शब्दकोश ['a'] = 1 और शब्दकोश ['b'] = 1। – GiannisIordanou
@evil_inside, आह, अगर आप यही चाहते हैं, तो आप दोनों कुंजी को केवल 1 क्यों निर्दिष्ट नहीं करते? – senderle