2012年6月 Archives

0 は False

| No Comments | No TrackBacks

Python で久しぶりにどはまりした話題。

いつものように Python でデータを処理して出力するプログラムを書いていたときのこと。順調に動いていたんだけど、なぜか時々思ったような動きをしていない。

そのときのコードは以下のような感じ。

dict_data = { 適当な辞書データ }
if dict_data.get(key, None):
     print u'値があったときの処理'
else:
     print u'値が無かったときの処理'

てな感じで辞書に希望キーがあった場合は値を処理して、無かった場合はエラーにならない感じに処理を書いていたのですが…なぜかあるはずのキーの値がないと言われる。

これ、おそらく Python 熟練者にはあまりにもばかばかしいバグっぽい感じですね。私も気づいたときは頭を抱えましたよ。

で、正解は…真値テストが 0 の時は偽なんですね。当然です。はい。だから、値が 0 の場合は、当然無かったときの処理が動くわけで…

えらい初歩的なことにはまってしまったなぁ。