2016-04-12 5 views
1

私はZed Shawの著書「Pythonの難しい方法」を読んでいます。現在、私は辞書について学んでいます。"Bucket"はPythonで何を意味しますか?

練習の1つでは、彼はhashmap.pyモジュールを作成します。

def new(num_buckets=256): 
    """Intializes a Map with a given number of buckets""" 
    aMap = [] 
    for i in range(0, num_buckets): 
     aMap.append([]) 
    return aMap 

これは、彼が作成した最初の関数です。私はまだ彼が何をやっているのか分かりません。(ちょうどコピーして、それが最終的には意味をなさないコードを理解しようとすれば彼は主張します)私はグーグルでコードを解読しようとしています。フォーラムを見る。とにかくちょっとバケットは何ですか?それはプログラマーの不器用なものか、それとも意味がありますか?名前は彼が作成するほとんどすべての機能に現れます。

ここに彼がバケットで作成する別の機能があります。

def get_bucket(aMap,key): 
    bucket_id = hash_key(aMap,key) 
    return aMap[bucket_id] 

は、私は、スタックオーバーフローやウェブを検索し、 バケットが何であるかについて明確な答えを微ことができませんでした... は、私はまだほとんど中間のプログラマはそのことに注意してください初心者です。

ありがとうございます。 - Allen

+0

あなたはバケットを配列の要素として扱うことができます。細胞として、何かが生きることができる空間として。ハッシュマップの場合、オブジェクトをキー、値のペアとして保存します。このキーと値のペアを単一のエンティティとして見ます。このエンティティはバケットにあります(ハッシュマップは複雑なオブジェクトがバケットと呼ばれる配列ですキーは要素を配置するバケットのインデックスを計算するために使用されます)。私はPython開発者ではありませんが、ハッシュマップの原則はどこでも同じです。 – john

+5

ハッシュマップは有用なデータ構造であり、バケットを使ってデータを保持します。しかし、入門コードで使用しているIMHOは** BAD **のアイデアです。この例は、SO Pythonのチャットルームが**難しいPythonの難解な方法を推奨しない理由の1つです。 [チュートリアルはどうすればよいですか?](http://sopython.com/wiki/What_tutorial_should_I_read%3F)をご覧ください。リンクされた記事[LPTHW Complaints](http://sopython.com/wiki/LPTHW_Complaints)を見たいかもしれませんが、そのリストの多くは、あなたのPythonとプログラミングのスキルがより高度な場合にのみ意味をなさないでしょう。 –

+3

バケットは、オブジェクトのコンテナです(通常の物理バケットと同様)。こちらをご覧ください(http://programmers.stackexchange.com/questions/144983/what-does-bucket-mean) – syntonym

答えて

1

ハッシュでは、データをキーと値のペアで保存します。

各キーは動的に追加することができ、ある種のテーブルに内部的に格納する必要があります。しかし、そのようなエントリの数は限られているので、複数のキーを1つのエントリにマッピングできます。

したがって、配列、リンクリストなどの 'バケット'内の単一のテーブルエントリに複数の値を格納する必要があるため、単一のハッシュテーブルに対して複数のキーと値のペアを保持できますエントリ。

関連する問題