Python で久しぶりにどはまりした話題。
いつものように Python でデータを処理して出力するプログラムを書いていたときのこと。順調に動いていたんだけど、なぜか時々思ったような動きをしていない。
そのときのコードは以下のような感じ。
dict_data = { 適当な辞書データ } if dict_data.get(key, None): print u'値があったときの処理' else: print u'値が無かったときの処理'
てな感じで辞書に希望キーがあった場合は値を処理して、無かった場合はエラーにならない感じに処理を書いていたのですが…なぜかあるはずのキーの値がないと言われる。
これ、おそらく Python 熟練者にはあまりにもばかばかしいバグっぽい感じですね。私も気づいたときは頭を抱えましたよ。
で、正解は…真値テストが 0 の時は偽なんですね。当然です。はい。だから、値が 0 の場合は、当然無かったときの処理が動くわけで…
えらい初歩的なことにはまってしまったなぁ。