基礎的な事
-
hash()関数は、与えられたオブジェクトのハッシュ値を返します。
-
ハッシュ値は、オブジェクトを一意に識別するための整数値です。
-
同じオブジェクトに対してhash()関数を複数回呼び出すと、通常は同じハッシュ値が返ります(プログラムの実行中)。
-
異なるオブジェクトであっても、稀に同じハッシュ値(ハッシュ衝突)が発生する可能性があります。
-
ハッシュ値は、辞書(dict)や集合(set)などのデータ構造の内部実装で、要素の高速な検索や比較のために利用されています。
-
ハッシュ化可能なオブジェクト(immutableなオブジェクト、例えば整数、浮動小数点数、文字列、タプルなど)に対してのみhash()関数を使用できます。
-
リストや辞書など、変更可能なオブジェクトはハッシュ化できません。
よく使うコマンド
hash(object)
-
引数 object: ハッシュ値を計算したいオブジェクトを指定します。
-
戻り値: オブジェクトのハッシュ値を整数で返します。
使用例
整数のハッシュ値
num = 10
hash_value = hash(num)
print(f"オブジェクト: {num}, ハッシュ値: {hash_value}")
文字列のハッシュ値
text = "hello"
hash_value = hash(text)
print(f"オブジェクト: '{text}', ハッシュ値: {hash_value}")
タプルのハッシュ値(ハッシュ化可能)
my_tuple = (1, 2, 3)
hash_value = hash(my_tuple)
print(f"オブジェクト: {my_tuple}, ハッシュ値: {hash_value}")
リストのハッシュ化(エラーになる例)
my_list = [1, 2, 3]
try:
hash_value = hash(my_list)
print(f"オブジェクト: {my_list}, ハッシュ値: {hash_value}")
except TypeError as e:
print(f"エラー: {e}")
辞書のハッシュ化(エラーになる例)
my_dict = {"a": 1}
try:
hash_value = hash(my_dict)
print(f"オブジェクト: {my_dict}, ハッシュ値: {hash_value}")
except TypeError as e:
print(f"エラー: {e}")
これらの例からわかるように、hash()関数は様々な不変なオブジェクト(例: 整数、少数、文字列、タプルなど)に対してハッシュ値を生成できます。変更可能なオブジェクト(例: リスト, 辞書)に対してはTypeErrorが発生します。