Python のハッシュ テーブルとハッシュ マップ

公開: 2022-11-06

データにアクセスまたは保存するには、複数の方法が必要です。 ハッシュ テーブルとハッシュマップは、辞書として知られる組み込みのデータ型を介して Python でこれを実装するのに最適なデータ構造です。

データ構造のハッシュマップまたはハッシュ テーブルは、キーをその値のペアにマップし、挿入、検索、または削除する要素を保持するインデックス値を計算する関数を使用します。 これにより、データへのアクセスがより簡単かつ高速になります。 ハッシュ テーブルは通常、キーと値のペアを格納し、ハッシュ関数を使用してキーを生成します。

この記事では、ハッシュ テーブルとハッシュマップとは何か、Python での実装方法について説明します。

データ サイエンスを学び、競合他社より優位に立つ

目次

ハッシュテーブルまたはハッシュマップ Python とは何ですか?

ハッシュ テーブルまたはハッシュマップ Python は、インデックス付きのデータ構造です。 ハッシュ関数を使用して、スロットまたはバケットの配列へのキーを使用してインデックスを計算します。 対応するインデックスを使用してその値をバケットにマップでき、キーは不変で一意です。

ハッシュマップは、保管するものでラベル付けされた引き出しのキャビネットに似ています。 たとえば、ハッシュマップは、姓名などのユーザー情報をバケットに保存できます。

ハッシュ関数は、ハッシュマップの実装に不可欠です。 キーを使用して、バケット リスト内のバケットのインデックスに変換します。 理想的なハッシングでは、キーごとに個別のインデックスが生成されます。 ただし、衝突が発生する可能性があることに注意してください。 ハッシュによって既存のインデックスが生成される場合、リストを再ハッシュまたは追加することで、複数の値のバケットを簡単に使用できます。 Python では、ハッシュ マップの例は辞書です。

ハッシュマップの実装を詳しく調べて、検索の最適化のためにデータ構造をカスタマイズおよび構築する方法を学びましょう。

Python のハッシュマップ

ハッシュマップには、次の関数が含まれています。

  • set_val(key, value):この関数は、キーと値のペアをハッシュ マップに挿入するために使用されます。 ハッシュ マップに既存の値が既に存在する場合は、値を更新する必要があります。
  • get_val(key):この関数は、マップされている指定されたキーに値を返すか、このマップにキーのマッピングがない場合は「レコードが見つかりません」を返します。
  • delete_val(key):ハッシュマップにキーのマッピングがある場合、特定のキーのマッピングを削除します。

実装:-

クラスハッシュテーブル:

# 指定されたサイズの空のバケット リストを作成する

def __init__(自己、サイズ):

self.size = サイズ

self.hash_table = self.create_buckets()

def create_buckets(self):

return [[] for _ in range(self.size)]

# ハッシュマップに値を挿入

def set_val (自己、キー、val):

# キーからインデックスを取得

# ハッシュ関数を使用

hashed_key = hash(key) % self.size

# インデックスに対応するバケットを取得

バケット = self.hash_table[hashed_key]

見つかったキー = False

インデックスの場合、enumerate(bucket) に記録します。

record_key, record_val = レコード

# バケットに同じキーがあるかどうかを確認します

# 挿入するキー

record_key == キーの場合:

found_key = 真

壊す

# バケットに挿入するキーと同じキーがある場合、

# キー値を更新

# それ以外の場合は、新しいキーと値のペアをバケットに追加します

見つかったキーの場合:

バケット[インデックス] = (キー、値)

そうしないと:

bucket.append((key, val))

# 特定のキーで検索された値を返す

def get_val (自己、キー):

# を使用してキーからインデックスを取得します

# ハッシュ関数

hashed_key = hash(key) % self.size

# インデックスに対応するバケットを取得

バケット = self.hash_table[hashed_key]

見つかったキー = False

インデックスの場合、enumerate(bucket) に記録します。

record_key, record_val = レコード

# バケットに同じキーがあるかどうかを確認します

# 検索対象のキー

record_key == キーの場合:

found_key = 真

壊す

# バケットが検索対象のキーと同じキーを持つ場合、

# 見つかった値を返す

# それ以外の場合は、レコードが見つからなかったことを示します

見つかったキーの場合:

record_val を返す

そうしないと:

「レコードが見つかりません」を返す

# 特定のキーの値を削除

def delete_val (自己、キー):

# を使用してキーからインデックスを取得します

# ハッシュ関数

hashed_key = hash(key) % self.size

# インデックスに対応するバケットを取得

バケット = self.hash_table[hashed_key]

見つかったキー = False

インデックスの場合、enumerate(bucket) に記録します。

record_key, record_val = レコード

# バケットに同じキーがあるかどうかを確認します

# 削除するキー

record_key == キーの場合:

found_key = 真

壊す

見つかったキーの場合:

バケット.ポップ(インデックス)

戻る

# ハッシュマップの項目を出力するには

def __str__(自己):

return “”.join(str(item) for item in self.hash_table)

hash_table = ハッシュテーブル(50)

# いくつかの値を挿入

hash_table.set_val([email protected]', '何らかの値')

印刷(ハッシュテーブル)

印刷()

hash_table.set_val('[email protected]', 'その他の値')

印刷(ハッシュテーブル)

印刷()

# キーでレコードを検索/アクセス

print(hash_table.get_val('[email protected]'))

印刷()

# 値を削除または削除

hash_table.delete_val('[email protected]')

印刷(ハッシュテーブル)

出力:-

[][][][][][][][][][][][][][][][][][][][][] ([email protected]', '何らかの値') ][][][][][][][][][][][][][][][][][][][][][] [][][][]

[][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'ある値') ][][][][][][('[email protected]', '他の値')][][][][][][][][][ ][][][][][][][][][][][][]

他の値

[][][][][][][][][][][][][][][][][][][][][] ([email protected]', '何らかの値') ][][][][][][][][][][][][][][][][][][][][][] [][][][]

米国をチェック - データサイエンスプログラム

データ サイエンスとビジネス分析のプロフェッショナル認定プログラム データサイエンスの科学のマスター データサイエンスの科学のマスター データサイエンスの高度な証明書プログラム
データサイエンスのエグゼクティブPGプログラム Python プログラミング ブートキャンプ ビジネス上の意思決定のためのデータ サイエンスのプロフェッショナル認定プログラム データサイエンスの高度なプログラム

辞書を使用したハッシュ テーブルの操作の実行:

辞書を介してハッシュ テーブルに対して Python で実行できる操作は多数あります。 それらは次のとおりです。

  • 値へのアクセス
  • 値の更新
  • 要素の削除

値へのアクセス:

次の方法で辞書の値に簡単にアクセスできます。

  • キー値の使用
  • 関数の使用
  • for ループの実装

キー値の使用:

以下のようなキー値を使用して、辞書の値にアクセスできます。

my_dict={'エルサ': '001', 'アナ': '002', 'オラフ': '003'}

my_dict['アンナ']

出力: '002'

関数の使用:

get()、keys()、values() などの多数の組み込み関数があります。

my_dict={'エルサ': '001', 'アナ': '002', 'オラフ': '003'}

print(my_dict.keys())

print(my_dict.values())

print(my_dict.get('Elsa'))

出力:-

dict_keys(['エルサ', 'アナ', 'オラフ'])

dict_values(['001', '002', '003'])

001

for ループの実装:

ループを使用すると、ディクショナリのキーと値のペアを反復処理してアクセスできます。 例えば:

my_dict={'エルサ': '001', 'アナ': '002', 'オラフ': '003'}

print(“すべてのキー”)

my_dict の x の場合:

print(x) # キーを出力します

print(“すべての値”)

my_dict.values() の x の場合:

print(x) #値を出力

print(“すべてのキーと値”)

my_dict.items() の x、y の場合:

print(x, “:” , y) #キーと値を表示

出力:

すべてのキー

エルサ

アンナ

オラフ

すべての値

001

002

003

すべてのキーと値

エルザ:001

アンナ:002

オラフ:003

値の更新:

辞書は、必要に応じて更新できる変更可能なデータ型です。 あなたは次のようにすることができます: -

my_dict={'エルサ': '001', 'アナ': '002', 'オラフ': '003'}

my_dict['Olaf'] = '004' #Dave の値を更新

my_dict['Kristoff'] = '005' #キーと値のペアを追加

印刷 (my_dict)

出力: {'Elsa': '001' , 'Anna': '002' , 'Olaf': '004', 'Kristoff': '005'}

辞書から項目を削除する:

del()、pop()、popitem()、clear()などの関数を使用して、辞書からアイテムを削除できます。たとえば、次のようになります。

my_dict={'エルサ': '001', 'アナ': '002', 'オラフ': '003'}

del my_dict['Elsa'] #'Elsa' のキーと値のペアを削除します

my_dict.pop('Anna') #'Anna' の値を削除

my_dict.popitem() #最後に挿入されたアイテムを削除します

印刷 (my_dict)

出力: {'オラフ': '003'}

結論

ハッシュマップとハッシュ テーブル Python は、関連データへのより簡単かつ迅速なアクセスに不可欠であると簡単に結論付けることができます。 これは、データ サイエンティストやデータ アナリストなどのデータ サイエンスの専門家にとって価値のあるツールです。 データ サイエンスの分野について詳しく知りたい場合は、upGrad が提供する最高のProfessional Certificate Program in Data Science for Business Decision Making があります。

ハッシュマップ、Python、およびハッシュテーブル、Python とは何ですか?

ハッシュテーブルは、ハッシュ関数を使用してキーが生成されるキーと値のペアを格納するのに役立ちます。 Python でのハッシュマップまたはハッシュテーブルの実装は、組み込みの辞書で行われます。

ハッシュマップとハッシュテーブルPythonの違いは何ですか?

Hashmap は同期されていませんが、Hashtable は同期されています。 つまり、ハッシュ テーブルはスレッド セーフであり、多数のスレッド間で共有できますが、HashMap は共有する前に適切な同期が必要です。

マップはハッシュテーブルですか?

ハッシュ テーブル Python はハッシュ マップとも呼ばれ、キーを値にマッピングするデータ構造です。 ハッシュ技術を使用しています。