TypeError: ‘set’ object is not subscriptable エラーの原因と解決策

TypeError: ‘set’ object is not subscriptable エラーの原因

まず、「TypeError: ‘set’ object is not subscriptable」はPythonのデータ型に関するエラーです。

「not subscriptable」は、添字不可という意味で解釈できますが、「subscript」は添字を意味し、「subscription」は添字表記を意味します。

エラーの内容を読むと、セット(set)は添字という概念ないので、添字表記ができないことを意味します。

つまり、setは要素を取り出せないということを意味します。

TypeError: ‘○○’ object is not subscriptable の ‘○○’ 部分には、添字表記に対応していないintやfloatの場合にも添字表記を用いるとエラーになってしまいます。

TypeError: ‘set’ object is not subscriptable エラーの解決策

このエラーが発生した場合、まずはエラーの内容を見て、どのようなエラーが出たか理解しましょう。

また、今回発生したエラーに対応するデータ型を調べます。このエラーの場合「set」だと特定できます。

setの場合、リストや辞書と違って添字表記できないため、set型として定義していないか(本当はリスト型として定義したつもりが、set型になっていた)など確認しましょう。

[]と{}を間違えないように定義しよう

Pythonではデータ型を作成する際に、[]を用いることでリスト型として定義出来ます。

li_sample = [10, 50, 100]
print(type(li_sample))

出力結果

<class 'list'>

一方で、{}を用いると集合型(セット型)と呼ばれるデータ型になってしまいます。

set_sample = {10, 50, 100}
print(type(set_sample))

出力結果

<class 'set'>

このように、変数を定義する際に[]{}を間違えてデータを定義してしまうとその後のプログラムで予期せぬバグがうまれる可能性があります。そのため、リスト型を定義したい場合には[]を用いてください。集合型(セット型)の詳細が知りたい方は、こちらのテキストを読んでみてください。

そもそも set型とは?

セット(set、集合)型とは、集合を扱うデータ型です。

セット型の特徴として、リスト型などと表記が似ているデータ型ではありますが、以下のような特徴を持ちます。

・重複した値を格納できない

・添え字やキーなどの概念がなくユニークな要素である

・要素の順序を保持しない

この特徴を活かし、セット型では集合、積集合、差集合などの集合演算を行うことができる点や、種類を管理するのに適しています。

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。

bootcamp_ad_72ppi.png

1 COMMENT

現在コメントは受け付けておりません。