私は複雑なデータ構造を持っています。これは基本的にキーがハッシュされたインスタンスです。キーに等しいハッシュ値しかわからない場合は、どうすればインスタンスを取り戻すことができますか?私はブルートフォースでそれを行うことができますが、私はキー/インスタンスをO(1)時間に取得できるはずです。インスタンスである辞書キーを取得する
class Test:
def __init__(self, foo, bar):
self.foo = foo
self.bar = bar
self.arr = ["extra"]
def __str__(self):
return self.foo + self.bar
def __hash__(self):
return hash(str(self))
def __eq__(self, other):
return hash(self) == hash(other)
my_thing = Test("FOO", "BAR")
my_dict = dict()
my_dict[my_thing] = 1
for k, v in my_dict.iteritems():
if k == "FOOBAR":
print k.arr
編集:私は(この場合は配列)をインスタンス内の可変データを取得することができるようにしたいです。だから私が"FOOBAR"
のハッシュを知っていれば、私は["extra"]
を得ることができるようにしたいと思っています。
'デフ__eq __(自己、他): リターンハッシュ(自己)==悪いハッシュ(その他)':どのようなハッシュ衝突はどうですか? –
あなたは 'my_thing'をもう一度入手したいですか? –
私はあなたが達成しようとしていることを理解するのに苦労しています。 –