Python:访问集合的成员

时间:2012-06-17 14:43:28

标签: python python-3.x set

假设我有一组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不能这样做(比遍历其所有成员更快)。如果是这样,至少有一种有效的解决方法吗?

3 个答案:

答案 0 :(得分:5)

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

d = {}
d[a] = a
retrieved_a = d[b]

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

也许这个:

(myset - (myset - set([b]))).pop() is a