草庐IT

Python ValueError : too many values to unpack

coder 2023-04-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.materialsdict默认情况下,您只迭代键(它们是字符串)。

由于 self.materials 有两个以上的键 * ,它们不能被解压到 tuplek, m”,因此是 ValueError exception被提升了。

在 Python 2.x 中,为了迭代键和值(tuple "k, m"),我们使用 self.materials.iteritems() .

但是,既然您无论如何都要把 key 扔掉,那么您也可以简单地遍历字典的值:

for m in self.materials.itervalues():

在 Python 3.x 中,首选 dict.values() (返回 dictionary view object ):

for m in self.materials.values():

关于Python ValueError : too many values to unpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053551/

有关Python ValueError : too many values to unpack的更多相关文章

随机推荐