
70
3
章
Python
組み込みのデータ構造と関数、ファイルの扱い
3.1.4.3
ディクショナリで使えるキーの型
ディクショナリのバリューは、
Python
のどのようなオブジェクトでも使うことができますが、キー
ではスカラー値(
int
、
float
、
string
)のように変更不可能(
immutable
)なオブジェクトか、あるいは、
タプル(タプル内のすべてのオブジェクトも変更不可能)でなければなりません。技術的な言葉でいう
とハッシュ可能である必要があります。あるオブジェクトがハッシュ可能であるか(つまりディクショ
ナリのキーに使えるか)は、
hash
関数を使って調べることができます。
In [127]: hash('string')
Out[127]: 5023931463650008331
In [128]: hash((1, 2, (2, 3)))
Out[128]: 1097636502276347782
In [129]: hash((1, 2, [2, 3])) #
リストは変更可能(
mutable
)なので失敗する
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-129-800cd14ba8be> in <module>()
----> 1 hash((1, 2, [2, 3])) ...