6

假设我有一组自定义对象,尽管它们的引用不同( )myset,但它们可能相同。a == b and a is not b现在,如果我add(a)到集合中,Python 正确地假设a in myset and b in myset即使len(myset) == 1集合中只有对象。

这很清楚。但是现在是否有可能a从集合中提取值,b仅使用?假设对象是可变的,我想同时更改它们,忘记了对a. 换句话说,我正在寻找myset[b]将完全返回集合成员a的操作。

在我看来,该类型set无法做到这一点(比遍历其所有成员更快)。如果是这样,是否至少有一个有效的解决方法?

4

3 回答 3

5

我认为这不set支持在 O(1) 时间内检索项目,但您可以使用 adict代替。

d = {}
d[a] = a
retrieved_a = d[b]
于 2012-06-17T14:50:51.427 回答
0

也许是这样:

(myset - (myset - set([b]))).pop() is a
于 2012-06-17T15:08:25.077 回答
0

如果您只有mysetand b,那么从这个角度来看,您将无法访问,a因为它不存在。如果您创建多个可变对象并将其中一个添加到其中,myset那么当您仅处理myset或处理您添加的对象时,其他对象就不是“已知的”。

如果要修改ab则需要在某处跟踪这两个对象。

于 2012-06-17T14:51:30.227 回答