如果我有一個對象與Python集合中的一個元素進行比較,但不是相同的對象,是否有合理的方法來獲取對集合中對象的引用?用例將使用該組來識別和共享重複的數據。如何使用等效對象訪問集合中的元素?
示例(Python 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
。 編輯:當s有多個元素時,這不起作用;路口是很自然的實現類似[x for x in smaller_set if x in larger_set]
也許一個很好的解決方法是使用每個鍵映射到它自身的字典,而不是集。
如果您需要兩個相同的可哈希對象中的特定一個,那麼看起來可能該對象不應該相等和/或可哈希。你爲什麼需要這個? – delnan 2011-12-23 12:54:13
我認爲你的懷疑是有道理的:pypy 1.7.0和ironpython 3.0都可以爲你的最終c返回False。 – DSM 2011-12-23 12:59:14
我可以通過將對同等對象的引用更改爲對同一對象的引用來節省內存。 – 2011-12-23 13:01:20