如果我有一个与 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
如何获得a
使用b
和的参考s
?我可以想到一种方法,但我不确定它是否不依赖于实现,无论你得到a
还是b
. 编辑:当 s 有多个元素时,这不起作用;交叉点很自然地实现了类似的东西[x for x in smaller_set if x in larger_set]
>>> for x in set((b,)).intersection(s): c = x
...
>>> c is a
True
也许一个好的解决方法是使用将每个键映射到自身的字典,而不是集合。