1. ホーム
  2. python

[解決済み] Python ValueError: Too many values to unpack [duplicate] (解凍する値が多すぎる)

2022-03-07 07:25:29

質問

私はこのコードからその例外を取得しています。

class Transaction:
    def __init__ (self):
        self.materials = {}

    def add_material (self, m):
        self.materials[m.type + m.purity] = m

    def serialize (self):
        ser_str = 'transaction_start\n'

        for k, m in self.materials:
            ser_str += m.serialize ()

        sert += 'transaction_end\n'
        return ser_str

for の行が例外を発生させるものです。その mMaterial オブジェクトになります。どなたか理由をご存じですか?

解決方法は?

self.materials dict で、デフォルトではキー (文字列) だけに対して反復処理をしています。

以来 self.materials は2つ以上のキーを持っています。 * に展開することはできません。 tuple " k, m "であり、そのため ValueError 例外 が発生します。

Python 2の場合。 x というように、キーと値を反復処理するために( tuple " k, m ")を使用します。 self.materials.iteritems() .

しかし、どうせキーを捨ててしまうのだから、単純に辞書の値を反復処理したほうがいい。

for m in self.materials.itervalues():

Python 3では。 x を好む。 dict.values() (を返します)。 ディクショナリビューオブジェクト ):

for m in self.materials.values():