Keys are not unique for a python dictionary! -


यहाँ एक बेवकूफ नौसिखिया सवाल एक अजगर शब्दकोश q लेनन (सेट (q.keys ()) के लिए! = लेन (q.keys ()) । क्या यह भी संभव है?

यह हो सकता है अगर आप dict की आवश्यकता का उल्लंघन करते हैं, और इसे बदल सकते हैं हैश।

जब किसी ऑब्जेक्ट को dict में उपयोग किया जाता है, तो इसके हैश मान में परिवर्तन नहीं होना चाहिए, और अन्य वस्तुओं के समानता में कोई परिवर्तन नहीं होना चाहिए।

(यह नहीं इसका अर्थ है कि एक हैश मान है अन्य गुण हो सकता है परिवर्तन, जब तक कि ये प्रभावित नहीं करते। इसे कभी भी बदलने की अनुमति नहीं होती है। यह एक सामान्य ग़लतफ़हमी है। हैश का मान खुद बदल सकता है। यह केवल dict है, जिसके लिए वह कुंजी हैश अपरिवर्तनीय है, न ही __ हैश __ है।)

निम्न कोड एक वस्तु के लिए एक वस्तु जोड़ता है, फिर उसके हश को तेंदुए के नीचे से बदलता है q [a] = 2 फिर a को डिक् में एक नई कुंजी के रूप में जोड़ता है, भले ही यह पहले से मौजूद है; चूंकि हैश मान बदल गया है, डिक्ट पुराने मूल्य को नहीं मिल रहा है। यह आपके द्वारा देखी गई ख़ासियत को दोहराता है।

  वर्ग टेस्ट (ऑब्जेक्ट): def __init __ (आत्म, ज): आत्म = h def = __ हश __ (स्व): वापसी self.ha = test (1 ) Q = {} q [a] = 1 ah = 2 q [a] = 2 प्रिंट q # सत्य: प्रिंट लेना (सेट (q.keys ())) = len (q.keys ())    

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -