यदि मेरे पास कोई ऑब्जेक्ट है जो पाइथन सेट के तत्व के बराबर तुलना करता है, लेकिन यह वही ऑब्जेक्ट नहीं है, तो सेट में ऑब्जेक्ट का संदर्भ प्राप्त करने का कोई उचित तरीका है? उपयोग केस डुप्लीकेट डेटा की पहचान और साझा करने के लिए सेट का उपयोग करेगा।एक समकक्ष वस्तु का उपयोग कर सेट के तत्व तक कैसे पहुंचे?
उदाहरण (अजगर 2.7):
>>> a = "This is a string"
>>> b = "This is a string"
>>> a is b
False
>>> a == b
True
>>> s = set((a,))
>>> b in s
True
कैसे b
और s
का उपयोग कर a
के लिए एक संदर्भ पाने के लिए? मैं एक तरह से सोच सकता हूं, लेकिन मुझे यकीन नहीं है कि यह कार्यान्वयन-निर्भर नहीं है कि आपको a
या b
मिलते हैं या नहीं। संपादित करें: यह तब काम नहीं करता जब एस में एक से अधिक तत्व होते हैं; चौराहे काफी स्वाभाविक रूप से की तरह [x for x in smaller_set if x in larger_set]
>>> for x in set((b,)).intersection(s): c = x
...
>>> c is a
True
कुछ कार्यान्वित किया जाता है शायद एक अच्छी युक्ति सेट के बजाय, एक dict है जो अपने आप को प्रत्येक कुंजी के नक्शे का उपयोग करने के लिए होगा।
यदि आपको दो बराबर, हैशबल ऑब्जेक्ट्स में से एक विशिष्ट की आवश्यकता है, तो ऐसा लगता है कि ऑब्जेक्ट बराबर और/या हैशबल नहीं होना चाहिए। आप इसकी आवश्यकता क्यों है? – delnan
मुझे लगता है कि आपके संदेह उचित हैं: pypy 1.7.0 और ironpython 3.0 दोनों (कर सकते हैं) आपके अंतिम सी के लिए गलत है। – DSM
मैं उसी ऑब्जेक्ट के संदर्भों के बराबर ऑब्जेक्ट के संदर्भों को बदलकर स्मृति को सहेज सकता हूं। –