PythonでKeyErrorが発生!!疑う原因と解消方法の経験談。 | 您所在的位置:网站首页 › keyerror:formatters › PythonでKeyErrorが発生!!疑う原因と解消方法の経験談。 |
Pythonをjupyter notebookであれやこれやと勉強していたら、突如出てきたのが「KeyError」のエラー。なんじゃこら?と思ったのですが、そんなクリティカルな問題ではなさそうだけど、原因と解消方法がわかったので、議事録がてら共有です。 Contents 1 KeyErrorの原因2 KeyErrorの失敗内容と解消方法2.1 KeyErrorが出るコード一部 KeyErrorの原因KeyErrorで出てくる原因は、「辞書型データを参照した際に、辞書内に指定したキーが存在しないと、KeyErrorが発生する」とのことです。要は「辞書型データ内で定義したデータを引っ張る時に、ちゃんと定義したデータの記述通りに引っ張ってきていないのでは?」ということです。 回避だけをするなら、例外処理の「try-except」を構文も1つの方法ですが、自分が実施しようとした内容で「try-except」構文を使うのは何か違うので、以下に失敗記述と解消方法を記載 KeyErrorの失敗内容と解消方法自分の記述をもとに説明していきます。 KeyErrorが出るコード一部 1234567891011121314 plt.scatter(irispd0['petal length (cm)'], irispd0['petal width (cm)'],c='red',\ label= species[dic[0]],marker='x')plt.scatter(irispd1['petal length (cm)'], irispd1['petal width (cm)'],c='blue',\ label= species[dic[1]],marker='.')plt.scatter(irispd2['petal length (cm)'], irispd2['petal width (cm)'],c='red',\ label= species[dic[2]],marker='+') plt.scatter(irisdiff['petal length(cm)'],irisdiff['petal width(cm)'],c='black',\ label='missed',marker='^')plt.title('iris散布図、k-means法')plt.xlabel('花弁の長さcm')plt.ylabel('花弁の幅cm')plt.legend()plt.show() 上記はPythonの記述コード一部です。Pythonで散布図を出す時のコード部分です。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をなくしたら綺麗にラベルが出てきて一件落着! ![]() try-except構文の回避策以外にも辞書型定義の大文字と小文字の違いがない様にしなければならないと初歩的なミスに注意です。 |
CopyRight 2018-2019 实验室设备网 版权所有 |