Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Python入門とプログラミングの解説

Pythonの関数の引数で辞書のアンパックを使う方法とエラー「got an unexpected keyword argument」となる場合の解決方法

Pythonの関数の引数に、辞書のアンパックを指定ときにエラー「got an unexpected keyword argument」が出てしまう場合の解決方法と注意すべきこと

Python入門レベルの人や初心者が陥りやすいミスの1つだと思われる、ちょっとしたエラーについてその解決方法を解説します。

それはPythonで関数を実行する場合に引数として辞書のアンパックを使用した場合に登場するエラーで、「got an unexpected keyword argument」と表示される場合の解決方法です。

なお、引数として「**kwargs」を使う場合については以下の記事も参照してください。

エラーメッセージ「got an unexpected keyword argument」

まず以下のコードを見てください。

dic_one={'apple':100,'orange':200, 'berry':300}

def values(x, y, z):  
    print(x,y,z)  

values(**dic_one)

辞書をアンパックして、その値だけを表示させるプログラムですがこれを実行すると、「got an unexpected keyword argument」とのエラーが出てうまく動きません。

それではなぜこのようなエラーが出るのか、その解決法について以下説明します。

使用法・解決方法と注意点

さっそくエラーの出ないコードを示します。これが辞書をアンパックして実引数として使う場合の方法の具体例となります。

dic_one={'apple':100,'orange':200, 'berry':300}

def values(apple, orange, berry): 
    print(apple,orange,berry)  

values(**dic_one)

これだとエラーは出ないで、

100 200 300

このように意図した通りの結果が表示されます。

では上の間違いのコードと正しいコードでは何が異なるのかわかるでしょうか。それは、

def values(x, y, z):  
    print(x,y,z)  
def values(apple, orange, berry): 
    print(apple,orange,berry)  

となっているかの違いです。つまり、関数定義の仮引数の名前が異なります。下の正解のほうは、

辞書のキーと仮引数の名称が一致しています。

この点に注意してください。

間違いのほうはx、y、zに対応する値を表示させようとしていますが、もちろん辞書にそのようなキーはありませんので、それに対応する値は求められません。よってエラーとなります。

以上のように、関数の引数に辞書のアンパックを設定する場合は、関数を定義する仮引数の名前と辞書のキーが一致するようにしましょう。

プログラミングを学びIT業界へ転職するなら現役エンジニアから学べるプログラミングスクールTechAcademy [テックアカデミー]でオンライン講座を受講するのが良いと思います。1人で悩みながら学習を進めるよりもわかりやすく、費やす時間も少なく合理的・効率的に学習できるからです。

など各種の講座が用意されています。無料で体験できるテックアカデミー無料体験も用意されています。

愛を分かち合いましょう