Help us understand the problem. What is going on with this article?

pythonのdictionaryでKeyErrorを出さないようにする

More than 5 years have passed since last update.

KeyError

test = {}
print test['a']

このサンプルを実行すると

KeyError: 'pagename'

の例外が発生します。コレを回避するためには、事前にin, has_keyなどを用いてキーが存在するか否かをチェックする必要があります。

test = {}
if 'a' in test:
    print test['a']
else: 
    print ''

このようなコードになるのですが、上記のような場合はgetという便利なメソッドが用意されているようです。

get(key[, default])

Documentsより引用

もし key が辞書にあれば、 key に対する値を返します。そうでなければ、default を返します。 default が与えられなかった場合、デフォルトでは None となります。そのため、このメソッドは KeyError を送出することはありません。

第二引数を指定すればデフォルト値も指定できるようです。
getを用いて上記コードを書き換えてみます

test = {}
print test.get('a')

とてもシンプルになりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away