広告

PythonでKeyErrorが発生!!疑う原因と解消方法の経験談。

KeyErrorのアラート

Pythonをjupyter notebookであれやこれやと勉強していたら、突如出てきたのが「KeyError」のエラー。なんじゃこら?と思ったのですが、そんなクリティカルな問題ではなさそうだけど、原因と解消方法がわかったので、議事録がてら共有です。

KeyErrorの原因

KeyErrorで出てくる原因は、「辞書型データを参照した際に、辞書内に指定したキーが存在しないと、KeyErrorが発生する」とのことです。要は「辞書型データ内で定義したデータを引っ張る時に、ちゃんと定義したデータの記述通りに引っ張ってきていないのでは?」ということです。

回避だけをするなら、例外処理の「try-except」を構文も1つの方法ですが、自分が実施しようとした内容で「try-except」構文を使うのは何か違うので、以下に失敗記述と解消方法を記載

KeyErrorの失敗内容と解消方法

自分の記述をもとに説明していきます。

KeyErrorが出るコード一部

上記はPythonの記述コード一部です。Pythonで散布図を出す時のコード部分です。KeyErrorがどこに出たかといえば、下記の画像をみて貰えばわかります。

KeyErrorのアラート

エラー内容を見ると「plt.scatter(irisdiff[‘petal length(cm)’],irisdiff[‘petal width(cm)’],c=’black’,\ 」の部分にエラーが出てます。KeyErrorは、辞書型内のキーでエラーが出るから、きっと「petal length(cm)」か「petal width(cm)」のどっちかが原因と推測。

すぐに思い当たる節があって、「鍵かっこ()の大文字と小文字が一致していない!」というオチ。

エラーコード内の1、3、5行目で使ってる大文字鍵かっこの「petal length(cm)」と「petal width(cm)」を8行目で使っている箇所にコピペしてエラー解消!

最初のKeyError状態だと下の画像の散布図が出てきて、正しく図のタイトルからラベルが表示されませんでした。

KeyErrorが出た散布図

だけど、KeyErrorをなくしたら綺麗にラベルが出てきて一件落着!

KeyErrorがでない散布図

try-except構文の回避策以外にも辞書型定義の大文字と小文字の違いがない様にしなければならないと初歩的なミスに注意です。