2016-04-05 8 views
-2

私はオブジェクトをキーとして持つpython辞書を持っています。 オブジェクトが特定の属性を持っていると言う:Python辞書の 'has_key'または 'in'メソッドをカスタマイズする方法

クラス例: テキスト 数 ID

は、どのように私はいくつかのテキスト「XYZ」

例OBJ1に等しい値を持つオブジェクトを探して、一定の時間を有効にします 例OBJ2例OBJ3 地図= {1、OBJ2:OBJ1 2、OBJ3:3}

I 'はhas_key' かPythonの辞書の方法 'に' 知りたいです一定の時間内に特定の属性を持つオブジェクトを取得することができます。すなわち、

map.has_key( 'xyz')は、テキスト属性が 'xyz'の対応オブジェクトの存在を一定時間で返します。

+1

すでに回答済みです:http://stackoverflow.com/questions/17539367/python-dictionary-keys-in-complexity –

答えて

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)になります。

+0

ありがとうございます。私は欲しいものを手に入れました。 –

+0

問題ありません。あなたは私の答えを正しいものにすることができれば気にしません。 – semicolon