为了账号安全,请及时绑定邮箱和手机立即绑定

如何存储不可散列的对象

如何存储不可散列的对象

jeck猫 2021-04-01 14:11:12
我正在使用一个为我提供一些对象的库(SocketIO会话,但这是问题范围之外的详细信息)。我想在连接时存储(引用)这些对象(而不是副本),然后再将其删除。来自C ++背景,我希望aset能够只存储指向这些对象的指针。但是,这些不能散列,因此我不能将它们放在set。而且我不知道用Python的方式来获得类似于指针的东西。我可以将它们放在列表中,但随后删除需要遍历(O(n)),并且插入将允许重复。是否有任何技巧可以从Python对象中获取行为类似于C ++指针(可比较,有序)的东西?现在,我正在做:# global varmy_objects = []# upon receive:my_objects.append(session)# upon removal:my_objects = my_objects - session
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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


# global var

my_objects = {}


# upon receive:

my_objects[id(session)] = session


# upon removal:

del my_objects[id(session)]


查看完整回答
反对 回复 2021-04-13
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号