TypeError:unhashable型:’リスト’

この記事では、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’に関するものです。



+