我有一个python字典,其中包含对象作为键。 对象有某些属性说:
类Ex: 文本 计数 ID
如何启用常量时间搜索值等于某些文字的对象' xyz'
Ex obj1 Ex obj2 Ex obj3 map = {obj1:1,obj2:2,obj3:3}
我想知道' has_key'或者'在' Python字典的方法可以实现在恒定时间内获取具有特定属性的对象,即
map.has_key(' xyz')会返回相应对象的存在,文字属性为' xyz'在不断的时间。
答案 0 :(得分:0)
您需要为该类实现__hash__
函数以及__eq__
方法。
class Foo:
def __init__(self, bar, bazz):
self.bar = bar
self.bazz = bazz
def __hash__(self):
return hash((self.bar, self.bazz))
def __eq__(self, other):
return (self.bar, self.bazz) == (other.bar, other.bazz)
假设您希望它工作Foo(5, 'a') == Foo(5, 'a')
。但是,如果您只关心对象的身份(foo is bar
),那么您根本不需要做任何事情,它已经O(1)
。