当前位置: 首页 > 面试题库 >

Python ValueError:太多值无法解压

柯振濂
2023-03-14
问题内容

我从这段代码中得到该异常:

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行是引发异常的行。该ms为Material对象。有人有什么想法吗?


问题答案:

self.materials是一个dict,默认情况下,您仅迭代键(字符串)。

由于self.materials具有两个以上的键*,因此无法将它们解压到tuple
k, m”中,因此引发了异常。ValueError


在Python 2. x中
,要遍历键和值(tuple
k, m”),我们使用self.materials.iteritems()

但是,由于无论如何都将键扔掉了,因此还可以简单地遍历字典的值:

for m in self.materials.itervalues():

在Python 3. x中 ,preferred
dict.values()(返回字典视图对象):

for m in self.materials.values():


 类似资料:
  • 我试图运行我在网上找到的刮板,但收到一个ValueError:太多的值在这行代码上解包 这条线是这个函数的一部分 如果您有任何意见,我们将不胜感激,谢谢。

  • 问题内容: 运行脚本答案时,出现以下错误: 编码: 任何帮助表示赞赏! 问题答案: 我从OpenCV StackExchange网站获得了答案。回答 答案: 我敢打赌,您正在使用当前的OpenCV的master分支:此处的return语句已更改,请参阅http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_d

  • 问题内容: 我正在编写一个opencv程序,但在另一个stackoverflow问题上找到了一个脚本: 计算机视觉掩盖人的手 运行脚本化答案时,出现以下错误: 编码: 任何帮助表示赞赏! 问题答案: 您正在使用当前的OpenCV的master分支:return语句已更改,请参见 http://docs.opencv.org/trunk/modules/imgproc/doc/structural_

  • 代码: 错误: 准备好了,我得到了一个自动驾驶代码,当我使用代码提取数据时,我得到了一个像这样的错误,我不知道该做什么,确切地说,我的Python版本最新版本,谢谢提前

  • 问题内容: 我得到了错误。知道我该如何解决吗? 问题答案: Python 2 您需要使用。 请参阅此答案,以获取有关遍历字典的更多信息,例如跨python版本使用using 。 Python 3 由于 Python 3的 是不再支持。使用代替。

  • 问题内容: 在for循环中使用split会导致上述异常。但是,当从for循环中获取独立元素时,它可以工作: 一个解释将不胜感激-并且自然也为for循环版本的正确语法。 问题答案: 该环路期望的是,在迭代每个项目可以解压到两个变量。因此,在您的情况下,看起来像其中之一: 这些可迭代项中的每个项都可以分为和组件。在您的情况下,它们不能,因为的输出是具有两个以上字符的字符串列表: