TypeError: Unhashable Type: Slice in Python

Manav Narula 2023年6月21日
  1. TypeError: unhashable type: 'slice' in Python
  2. Python の TypeError: unhashable type: 'slice' を修正
  3. まとめ
TypeError: Unhashable Type: Slice in Python

スライスは、Python で非常に一般的な手法です。 要素のインデックスを使用して、文字列、リスト、タプルなどの特定のシーケンスからデータを抽出できます。

スライスの非常に簡単な例を以下に示します。

lst = [2, 5, 6, 7, 3, 1]
print(lst[0:2])

出力:

[2, 5]

上記の例では、スライス手法を使用してリストの一部を抽出しています。 インデックスの使用に注意してください。

TypeError: unhashable type: 'slice' in Python

Python では、特定のデータ型に対してサポートされていない操作を実行しようとすると、TypeError が発生します。 辞書、DataFrame などのサポートされていないデータ型でこの手法を使用しようとすると、スライス中に TypeError が発生することもあります。

例えば:

d = {"a": 10, "b": 11}
d[0:2]

出力:

TypeError: unhashable type: 'slice'

上記の例で発生した unhashable type: 'slice' エラーに注意してください。

辞書は、ハッシュ関数を使用して、それぞれのキーを使用して値を見つけます。 値のインデックスは格納されません。

ここでのハッシュ不可とは、スライス操作がハッシュ可能ではなく、辞書では機能しないことを意味します。

このチュートリアルでは、Python の unhashable type: 'slice' エラーを解決する方法を示します。

Python の TypeError: unhashable type: 'slice' を修正

最も基本的な修正は、スライスをサポートするシーケンスを使用することです。 これらには、リスト、文字列、辞書、タプル、およびその他のサポートされているシーケンスが含まれます。

スライスをサポートしていない辞書をリストに変換して、このエラーを修正できます。

ディクショナリの場合、values()keys() を使用して、ディクショナリ内の値とキーのビュー オブジェクトを取得できます。 このオブジェクトは、list() 関数を使用してスライスをサポートするリストに変換できます。

以下のコードを参照してください。

d = {"a": 10, "b": 11}
print(list(d.values())[0:2])
print(list(d.keys())[0:2])

出力:

[10, 11]
['a', 'b']

上記の例では、辞書をキーと値の 2つのリストに変換します。 これらのリストに対してスライスを実行します。

items() 関数を使用して、キーと値のペアのビュー オブジェクトをタプルのリストで返すこともできます。

以下のコードを参照してください。

d = {"a": 10, "b": 11}
print(list(d.items())[0:2])

出力:

[('a', 10), ('b', 11)]

まとめ

このチュートリアルでは、Python の unhashable type: 'slice' エラーとその修正方法を示します。 最初に、Python でのスライス手法について説明しました。

辞書とその背後にある理由がこの手法をサポートしていないことを示しました。 この修正には、辞書を使用してリストを作成できる items()keys()、および values() などのさまざまな関数の使用が含まれます。これは、さらにスライスに使用できます。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Error