如何定制' has_key'或者'在' Python字典的方法

时间:2016-04-05 03:25:06

标签: python dictionary

我有一个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'在不断的时间。

1 个答案:

答案 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)