Python 辞書で ValueError: Unpack する値が多すぎる(予想される 2) を解決する

Olorunfemi Akinlua 2023年6月21日
  1. ValueError: unpack する値が多すぎます (予想される 2) を解決する辞書キーの使用
  2. ValueError: unpack する値が多すぎます (予想される 2) を解決します。ディクショナリ値の使用
  3. ValueError: unpack する値が多すぎます (予想される 2) を辞書 items() を使用して解決する
Python 辞書で ValueError: Unpack する値が多すぎる(予想される 2) を解決する

Python で辞書やリストを扱う場合、高い確率で ValueError が発生します。 多くの場合、これは、値にアクセスするときに間違ったインデックスまたはプロパティを渡すことが原因です。

ディクショナリでは、値をループするときに、ディクショナリをトラバースする適切な方法を理解して、ValueError または too many values to unpack (expected 2) エラー メッセージを防ぐ必要があります。

この記事では、ディクショナリのプロパティと値をトラバースまたはアクセスし、ValueError: unpack する値が多すぎます (予想される 2) エラーを防ぐ 3つの方法について説明します。

ValueError: unpack する値が多すぎます (予想される 2) を解決する辞書キーの使用

エラー メッセージを解決する前に、ValueError: unpack する値が多すぎます (予想される 2) エラーの原因となるシナリオを再現してみましょう。

辞書があり、キーと値をループして、キーと値を出力することを計画している場合。 一部の初心者は、以下のコード スニペットを試してみたくなるかもしれません。

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for key, values in dictionary:
    print("Key: " + key)
    print("Value: " + str(values))
    print("===")

コードの出力:

Traceback (most recent call last):
  File "c:\Users\akinl\Documents\HTML\python\dict.py", line 8, in <module>
    for key, values in dictionary:
ValueError: too many values to unpack (expected 2)

出力領域内にエラー メッセージ ValueError: too many values to unpack (expected 2) が表示されます。これを解決するには、for/in ループが iterable (list, tuple 、セットなど)。

ただし、ディクショナリの場合、キーのみがメソッドなしで直接反復可能です。 したがって、コードを機能させるには、キー key にアクセスするために 1つの変数のみにアクセスする必要があり、キーと値にアクセスするために 2つの変数にアクセスする必要はありません。

さて、残っているのは、値にアクセスする方法です。 値にアクセスするには、単一の変数 key を角括弧表記 dictionary[key] 内で使用できます。

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for key in dictionary:
    value = dictionary[key]
    print("Key: " + key)
    print("Value: " + str(value))
    print("===")

コードの出力:

Key: color
Value: blue
===
Key: shape
Value: square
===
Key: volume
Value: 40
===

単純なコード変更により、ValueError: unpack する値が多すぎます (予想される 2)エラーを排除し、問題なく Python 内でディクショナリ オブジェクトを反復処理しました。

ValueError: unpack する値が多すぎます (予想される 2) を解決します。ディクショナリ値の使用

同じシナリオを使用して、ディクショナリ オブジェクトに付属する values() メソッドを使用して値に直接アクセスできます。 これにより、キーの代わりに値にアクセスできます。

したがって、同じシナリオでは、値にしかアクセスできません。 値のみが有用な場合に役立ちます。

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for value in dictionary.values():
    print("Value: " + str(value))
    print("===")

コードの出力:

Value: blue
===
Value: square
===
Value: 40
===

ValueError: unpack する値が多すぎます (予想される 2) を辞書 items() を使用して解決する

ValueError: unpack する値が多すぎます (予想される 2) エラーを発生させた最初のコード スニペットでは、ディクショナリ メソッド items() を使用してエラーなしで 2つの変数を維持できます。

items() メソッド を辞書に適用すると、タプルに格納されているキーと値のペア (ビュー オブジェクト) が返されます。 分解の助けを借りて、2つの値を変数 (keyvalue) に解析し、それらを for ループ コード ブロック内で使用して、キーと値に個別にアクセスできます。

dictionary = {"color": "blue", "shape": "square", "volume": 40}

for key, value in dictionary.items():
    print("Key: " + str(key))
    print("Value: " + str(value))
    print("===")

コードの出力:

Key: color
Value: blue
===
Key: shape
Value: square
===
Key: volume
Value: 40
===

dictionary.items() が何を出力するかをよりよく理解するには、以下のコードが役に立ちます。

print(dictionary.items())

出力:

dict_items([('color', 'blue'), ('shape', 'square'), ('volume', 40)])

出力は、反復可能なタプルを含む dict_items リストです。

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

関連記事 - Python Error