2017-10-09 16 views
0

辞書では、そのキーにハッシュが使用されていることを知りました。 は、私は私が何をしたいかのように、ハローこの辞書の "キーのハッシュ値"で値にアクセスする方法は?

dict.get(1.1) 

を得ることができます

dict = { 1.1 : 'hello', 2 : 'bye' } 

として定義された辞書が

LIKE「こんにちは」キーのハッシュ値を通じて、何かを得るであるとし
dict.get(hash(1.1)) 

このようなものはありますか?これどうやってするの?私はハッシュ値が計算されているかどうか、Pythonでチェックしたいですか?それが実際に生成されている場合、私は直接そのアドレスに行き、「こんにちは」の価値を得ることができます。

+4

あなたの前提には、キーのハッシュを考慮して単一の値を見つけることが保証されていないため、欠陥があります。衝突が発生する可能性があるので、単一のキーに対して複数の値が存在する可能性があります。その時点で、そのバケット内でセカンダリルックアップを実行する必要があります。したがって、固有の対応する値を見つける唯一の方法であるため、キーで検索する必要があります。 [こちらを参照](https://stackoverflow.com/questions/9010222/how-can-python-dict-have-multiple-keys-with-same-hash) – CoryKramer

+0

1つのハッシュ値は、複数のオブジェクトに関連付けることができます。あなたは常にハッシングが1対1にマップされていると仮定しています。 –

+0

@CoryKramer大丈夫です、作成した辞書に、そのハッシュ値にマップされたすべてのオブジェクトを取得できますか?私は一意の値を必要としません、私はちょうどそのハッシュにマップされたすべてのオブジェクトを参照したいですか? –

答えて

0

ディクショナリに値が格納されている場合、値を1対1で格納することは保証されません。これは、辞書へのアクセスと格納がO(n)最悪の場合の時間の複雑さであることを意味します。つまり、辞書を格納または検索するときに、値が同じハッシュをn回指している可能性があります(入力の長さ)。

各検索/記憶は、私たちが必要とするものを得る前に、他のすべての値を渡す必要があります(配列の最後の位置からアイテムを取得し、最初の位置から検索を開始したときと同じです)。

このため、「hello」を確実に検索することはできません。また、次のようなものもあります。

ハッシュ1.1のインデックスを取得していますが、これはインデックス1.1とはまったく異なります。

+0

その場合、そのハッシュに関連付けられたオブジェクトの検索を呼び出すと、辞書内のすべてのオブジェクトを取得できますか?私の場合、ハッシュに関連付けられた値を検索すると、両方とも(最悪の場合)「こんにちは」と「バイバイ」を得ることができますか? –

+0

私は、pythonがハッシュ値を探していることを知っています。もしそれが他のレベルのハッシュチェックを実行するよりも衝突したら、私の辞書のすべての要素がそのハッシュにマップされていても値? –

+0

ハッシュマップの独自のデータ構造を作成した場合は、これを行うことができます。これは、もしあなたがおそらくあなたがすることを意図している課題のためのものです。しかし、内蔵されている辞書を使用して - 私はそれが可能かどうか完全には分かりません。 – Rrr

関連する問題