Python : 「unsubscriptable object」 エラーについて
2007.07.27
Pythonで良く見かける「unsusbscriptable object」エラーとは…
subscript という英単語を辞書で引くと
プログラムで配列要素を指定するために用いられる記号《集合の要素につける番号》という意味がありました. あるオブジェクトをlistオブジェクトとみなして"[]"演算子(?)を使って要素を取出そうとした.だけど,あるオブジェクトはlistオブジェクトじゃないのでTypeErrorになる.つまり,Pythonの unsubscriptable object は「番号によって要素指定できないオブジェクトだよ」という意味ですね.
>>> x = None; x[2] Traceback (most recent call last): File "", line 1, in ? TypeError: unsubscriptable object >>> x = 10; x[2] Traceback (most recent call last): File "", line 1, in ? TypeError: unsubscriptable object >>> x = {}; x[2] Traceback (most recent call last): File "", line 1, in ? KeyError: 2私の経験上 None に対して"[]"を使っている場合が多いんじゃないでしょうか.もちろんこの例のように,自明な場合のエラーなら簡単に探せますが,プログラム中で予想外のタイミングで変数にNoneが割当てられていることはあります. もちろん,「予想外」なのはプログラミングした者にとって予想外という意味で,プログラムは書いてあるとおり動くだけですけどね.
カテゴリー:技術情報メモ