Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Tuple型はDictionary型のKeyとしてつかえる

Tuple型はDictionary型のKeyとしてつかうことができます。
……え、用途?
何らかの制約や高速化の際、クラスなしで関係する変数一個を紐付けできる……とかですかね??(小声

実際のところ

画面A、Bがあって、これの稼動状態をBoolenでもつようなDictionaly型があるとします。

displayA = (480,320)
displayB = (240,240)
status = {displayA: True, displayB: False}

取扱はそのまんまなので、参照更新自在

status[displayA]
#>>True

status[displayB]
#>> False

status[displayB] = True
status[displayB]
#>> True

冒頭のように、これはリスト型だとできない挙動です。

displayC = [100,100]

status = {displayA: True, displayB: False, displayC: True}
"""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
"""

公式の説明

この部分についてはPython公式がちゃんと記事にしてくれています。
雑にまとめると……
PythonのDictionary型は高速化のため捜査にHashをつかっている。
そのため、hashの使えないList型は除外される、と。
DictionaryKeys - Python Wiki