こんにちはPyQサポートです。 今回はKeyErrorというエラーの意味と考えられる原因を紹介します。
質問
KeyError: 'birthday'
というエラーが出ました。このエラーの意味を教えてください。
入力した内容(コード)
d = {"name": "Suzuki"} d["birthday"]
出たエラー(実行結果)
Traceback (most recent call last): File "energy_dozen.py", line 3, in <module> d["birthday"] KeyError: 'birthday'
回答
birthday
という存在しない辞書のキーを参照しているエラーです。
解説
質問のコードはbirthday
という存在しない辞書のキーを参照しているので、birthday
が{キー: 値, キー: 値, ...}
のキーの中に存在するかを確認してください。
辞書について
辞書リテラルは、{キー: 値, キー: 値, ...}
のようにキーと値をコロン(:)で結合し、カンマ(,)で複数の要素を区切ります。要素を持たない空の辞書は{}で表します。
辞書に関するルールは以下の通りです。
- キーと値で1つの要素
- 要素を追加、削除できる
- キーを利用して、値を変更できる
詳しくは以下のPyQドキュメントをご覧ください。
KeyErrorの出やすい処理
辞書の値の参照
- 今回紹介したサンプルコードです
- 参照しているキーが、辞書の中に存在しているかをチェックしましょう
辞書の要素の削除
pop()メソッド
下記のエラーが出た時は、辞書の、存在しないキーを指定して要素を削除しようとしていないかをチェックしましょう。
【サンプルコード】
d = {"name": "Hiroki"} d.pop("birthday")
【出たエラー】
Traceback (most recent call last): File "keyerror/03.py", line 3, in <module> d.pop("birthday") KeyError: 'birthday'
del文
下記のエラーが出た時も、辞書の、存在しないキー
を指定して要素を削除しようとしていないかをチェックしましょう。
【サンプルコード】
d = {"name": "Hiroki"} del d["birthday"]
【 出たエラー】
Traceback (most recent call last): File "keyerror/05.py", line 4, in <module> del d["birthday"] KeyError: 'birthday'