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 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
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません