पर विचार करें:== ऑपरेटर वास्तव में पाइथन शब्दकोश पर क्या करता है?
>>> a = {'foo': {'bar': 3}}
>>> b = {'foo': {'bar': 3}}
>>> a == b
True
अजगर दस्तावेज़ के अनुसार, शब्दकोशों पर you can indeed use==
ऑपरेटर।
वास्तव में यहां क्या हो रहा है? क्या पाइथन समानता सुनिश्चित करने के लिए शब्दकोशों के प्रत्येक तत्व को दोबारा जांच रहा है? क्या यह सुनिश्चित कर रहा है कि चाबियाँ समान रूप से मेल खाती हैं, और मान भी समान रूप से मेल खाते हैं?
क्या ऐसे दस्तावेज हैं जो एक शब्दकोष पर ==
बिल्कुल निर्दिष्ट करते हैं? या क्या मुझे समानता की जांच के अपने संस्करण को लागू करना है या नहीं?
(==
ऑपरेटर काम करता है, यही कारण है कि dicts dicts की hashable नहीं कर रहे हैं? यही है, मैं क्यों नहीं बना पा रहा एक सेट(), या एक शब्दकोश कुंजी के रूप में एक dict का उपयोग करें?)
डिक्ट्स हैंशबल नहीं हैं क्योंकि वे उत्परिवर्तनीय हैं और उनका डेटा पिछले राज्यों के प्रति संवेदनशील है। बराबर राज्यों के दो डिक्ट्स होना आसान होगा, लेकिन एक धैर्य के इतिहास (अधिक डमी प्रविष्टियां युक्त) के कारण असमान हैश –
@ स्लेटर टियरनस: आप आसानी से डमी प्रविष्टियों को अनदेखा कर सकते हैं; यह कोई मुद्दा नहीं है। उत्परिवर्तन एक बड़ा मुद्दा है। –