IT Rescue IT関連Tips情報

Python : 「unsubscriptable object」 エラーについて

2007年7月27日python&zope

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が割当てられていることはあります.

もちろん,「予想外」なのはプログラミングした者にとって予想外という意味で,プログラムは書いてあるとおり動くだけですけどね.


コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。