如何存储不可散列的对象

时间:2018-06-22 19:14:00

标签: python

我正在使用的库为我提供了一些对象(SocketIO会话,但这是问题范围之外的详细信息)。

我想在连接时存储(引用)这些对象(而不是副本),然后再将其删除。来自C ++背景,我期望set能够只存储指向那些对象的指针。但是它们不可散列,因此我不能将它们放在set中。而且我不知道用Python的方式来获得类似于指针的东西。我可以将它们放在一个列表中,但随后删除需要遍历(O(n)),插入将允许重复。

是否有任何技巧可以从Python对象中获取行为类似于C ++指针(可比较,有序)的东西?

现在,我在做

# global var
my_objects = []

# upon receive:
my_objects.append(session)

# upon removal:
my_objects = my_objects - session

1 个答案:

答案 0 :(得分:3)

一个想法是使用对象的ID。它可以识别对象,尽管只有在您真正使用相同的对象而不是使用具有相同值的新对象时,它才能起作用。

AsgnPos <- function(j, b, e, pos) {
    for(q in b:e){
        if(CompleteDataset$PrimPos[j] == Grps[q]){
            CompleteDataset$PosGrp[j] <<- pos
        }
    }
}