ValueError : 太多值无法解包

Posted

技术标签:

【中文标题】ValueError : 太多值无法解包【英文标题】:ValueError : too many values to unpack 【发布时间】:2019-03-28 10:28:50 【问题描述】:

我不明白下面的代码。当我执行它时,它给出了值错误太多的值来解包

train_data=[data, Label]
print train_data
for data, Label in train_data:
     print data
     print Label


 output 
 [array([[23., 114., 49., ..., 61., 66., 75.,],
        [134., 345., 123., ..., 252., 249., 255.],
        ....
        [123., 97., 45., ..., 33., 234.,132.],
        [76., 98., 54., ..., 243., 211.,187.]], dtypye=float32), 
        array([0,0,1,0,2,1,1,0,0,2,2,2,0,0,0,0,2,0,0,2,2,2,0,2,2,1,1,0])]

 ValueError Traceback(most recent call last)
      1. print train_data
  --->2. for data,Label in train_data
 ValueError: too many values to unpack

请帮我解决这个问题。

【问题讨论】:

从问题中我不确定您在问什么,但我相信您的问题是 for 循环中缺少 *。我假设 Label 是每一行的最后一个值?那么你的 for 循环应该是:for *data, Label in train_data: 在 for 循环中应该是 data 而不是 *data 这个错误意味着你试图在仅 2 个变量中解压缩太多变量。问题是您使用train_data=[data, Label] 的方式对我来说似乎很奇怪。这就像您正在尝试创建数据元组及其标签,但实际上将整个数据数组放在首位,然后将标签数组放在它旁边 【参考方案1】:

由于我没有您的数据,我无法尝试重现您的问题。不过,我建议您尝试以下方法。

zip(list_a, list_b)代替train_data=[data, Label]

试试这个,让我知道它是否有效

【讨论】:

你是对的,遍历两个列表(或数组)是用zip完成的

以上是关于ValueError : 太多值无法解包的主要内容,如果未能解决你的问题,请参考以下文章

Couchbase cli cluster-init 返回“太多值无法解包”

OpenCV python:ValueError:解包的值太多

ValueError:解包的值太多(Python 2.7)

Tensorboard - ValueError:解包的值太多(预期 2)

syncdb - ValueError:解包的值太多

Makemigrations ValueError:解包的值太多