<一覧に戻る

Pythonの辞書を用いたハッシュテーブル

ハッシュテーブルは、データを高速に検索するためのデータ構造であり、Pythonでは辞書(dict)を使用することで簡単に実装できます。この教材では、Pythonの辞書を用いたハッシュテーブルの基本的な使い方とその特徴を解説します。

ハッシュテーブルとは

ハッシュテーブルは、キーと値のペアを格納するデータ構造で、キーをハッシュ関数に通すことでインデックスを生成し、そのインデックスに基づいて値を効率的に格納・検索します。

ハッシュテーブルの利点

  • 高速な検索: 平均的にO(1)の時間で要素を検索できます。
  • 簡単な実装: Pythonの辞書を使用することで、ハッシュテーブルの実装が簡単になります。

Pythonの辞書の基本操作

Pythonの辞書は、ハッシュテーブルを基にしたデータ構造で、以下の基本的な操作をサポートしています。

辞書の作成

辞書は波括弧 {} を使って作成します。

# 空の辞書を作成
my_dict = {}

# 初期値を持つ辞書を作成
my_dict = {"apple": 1, "banana": 2, "orange": 3}

要素の追加と更新

辞書に新しい要素を追加したり、既存の要素を更新することができます。

# 新しい要素を追加
my_dict["grape"] = 4

# 既存の要素を更新
my_dict["banana"] = 5

print(my_dict)  # {'apple': 1, 'banana': 5, 'orange': 3, 'grape': 4}

要素の削除

要素を削除するには、del文やpopメソッドを使います。

# del文を使用して要素を削除
del my_dict["orange"]

# popメソッドを使用して要素を削除し、削除した値を取得
removed_value = my_dict.pop("apple")

print(my_dict)  # {'banana': 5, 'grape': 4}
print(removed_value)  # 1

要素の検索

辞書に特定のキーが存在するかどうかを確認するには、in演算子を使います。

# キーの存在確認
if "banana" in my_dict:
    print("バナナの数:", my_dict["banana"])  # 出力: バナナの数: 5
else:
    print("バナナは存在しません")

辞書のメソッド

Pythonの辞書には、便利なメソッドがいくつかあります。

keys(), values(), items()

  • keys(): 辞書のすべてのキーを取得します。
  • values(): 辞書のすべての値を取得します。
  • items(): 辞書のすべてのキーと値のペアを取得します。
# 辞書のキーを取得
keys = my_dict.keys()
print(keys)  # dict_keys(['banana', 'grape'])

# 辞書の値を取得
values = my_dict.values()
print(values)  # dict_values([5, 4])

# 辞書のキーと値のペアを取得
items = my_dict.items()
print(items)  # dict_items([('banana', 5), ('grape', 4)])

応用例: 単語の出現頻度をカウント

次に、辞書を使ってテキスト内の単語の出現頻度をカウントするプログラムを作成してみましょう。

def count_word_frequencies(text):
    # 単語をカウントするための辞書を作成
    word_count = {}

    # テキストを単語に分割
    words = text.split()

    # 各単語の頻度をカウント
    for word in words:
        # 小文字に変換してカウント
        word = word.lower()
        if word in word_count:
            word_count[word] += 1
        else:
            word_count[word] = 1

    return word_count

# テストテキスト
sample_text = "Python is great and python is easy to learn. Python is popular."
word_frequencies = count_word_frequencies(sample_text)

print(word_frequencies)

解説

  1. count_word_frequencies関数を定義し、テキストを引数として受け取ります。
  2. 空の辞書word_countを作成し、テキストをスペースで分割して単語のリストを作成します。
  3. 各単語を小文字に変換し、辞書に既に存在するかを確認します。存在すればカウントを増やし、存在しなければ新しいエントリを作成します。
  4. 最後に、単語の頻度が格納された辞書を返します。

このように、Pythonの辞書を使用することで、ハッシュテーブルの特性を活かした効率的なデータ処理が可能になります。ハッシュテーブルの理解を深めるために、さまざまなデータを扱ってみることをお勧めします。

出力結果: