この記事では、TypeError: unhashable type: 'list'
について説明します。
dictionary
またはset
のキーとしてlist
を配置しようとすると、このエラーが発生します。listはハッシュできないオブジェクトです。TypeError: unhashable type
は、通常、ハッシュ不可能なオブジェクトをハッシュしようとすると発生します。
例の助けを借りてこれを見てみましょう:
パイソン
1
2
3
4
|
dict1={1:’one’,:’two’}
print(dict1)
|
出力:
この問題は、listをタプルにキャストすることで解決できます。 タプルは不変オブジェクトなので、辞書のキーとして使用できます。
パイソン
1
2
3
4
|
dict1={1:’one’,tuple():’two’}
print(dict1)
|
出力:
{1: ‘one’,(2,10):’two’}
ご覧のように、tuple()関数を使用すると、プログラムは正常に動作しました。
setを使った別の例を見てみましょう。
パイソン
1
2
3
4
|
セット1={,}
印刷(セット1)
|
出力:
この問題は、listをタプルにキャストすることで解決できます。 tuple
は不変オブジェクトであるため、辞書のキーとして使用できます。
パイソン
1
2
3
4
|
set1={tuple(),tuple()}
print(set1)
|
出力:
{(1, 2), (3, 4)}
ご覧のとおり、tuple()
関数を使用すると、プログラムは正常に機能しました。
ハッシュ可能オブジェクトとは何ですか?
ハッシュは、データを固定サイズのint値にエンコードする方法です。 これは、一般的に、高性能なデータ構造を設計するために使用されます。
Pythonでハッシュ可能なオブジェクト
int | float | decimal | bool | string | タプル | complex | range | frozenset | バイト |
Pythonの非ハッシュ可能オブジェクト
リスト | セット | dict | bytearray | カスタムクラス |
それはすべてTypeError:unhashable type:’list’に関するものです。