Python | too many values to unpack (expected 2) エラーの原因と解決策

2023-02-16Python エラー,Python

Python | too many values to unpack (expected 2) エラーの原因と解決策

Pythonの実行時に発生するエラー「too many values to unpack (expected 2)」の原因と解決策について紹介しています。

ValueError: too many values to unpack (expected 2)
ValueError:展開する値が多すぎます

確認環境

Windows11 ローカル
Python python-3.11.1

too many values to unpack (expected 2) エラーの原因

「too many values to unpack (expected 2)」というPythonの実行エラーは必要とする引数や値の数に対し、与えた変数、引数、値の数の方が多くなっている場合に発生するエラーです。

例えば以下のような事がエラーの発生原因にあります。

  • for文で必要上の値を期待している場合
  • 変数やタプルを複数同時に定義しようとした再に数が合わない場合
  • 関数の返り値と受け取る変数の数が合わない場合

too many values to unpack (expected 2) エラーの発生例と解決策

「too many values to unpack」が発生する例とその解決策を紹介します。

for文で必要上の値を期待している場合

for文で必要上の値を期待している場合、展開する値が多すぎるという事で同エラーが発生します。
以下ように辞書名に何も付けずに指定する場合のfor文はキー(key)しか取得できません。

data = {'type': 3, 'val': 1, 'name': 2}
for key, value in data:

# ValueError: too many values to unpack (expected 2)

このコードによるエラーを解決するには、必要とする値を減らすか、items()keys()values()を適切に指定します。
キー名、値共に取得したい場合は、items()を利用します。

data = {'type': 3, 'val': 1, 'name': 2}
for key, value in data.items():

変数やタプルなどを複数同時に定義しようとした再に数が合わない場合

変数で値、タブルやリストなどを複数セットで定義、参照する際に、数が合わない場合にエラーが発生します。

a, b = ('apple', 'banana', 'oine')

# alueError: too many values to unpack (expected 2)

このコードによるエラーを解決するには変数と値の数を適切に揃えます。

a, b, c = ('apple', 'banana', 'oine')

関数の返り値と受け取る変数の数が合わない場合

関数の返り値と受け取る変数の数が合わない場合も、このエラーが発生します。

def myFunction():
    return 'apple', 'banana', 'pine'

a, b = myFunction()

# alueError: too many values to unpack (expected 2)

上記のコードによるエラーは関数の返り値と受け取る変数と数を適切に揃えることで解決します。

def myFunction():
    return 'apple', 'banana', 'pine'

a, b, c = myFunction()