Python 2 - ValueError:没有足够的值来解包(预期 6,得到 1)
Posted
技术标签:
【中文标题】Python 2 - ValueError:没有足够的值来解包(预期 6,得到 1)【英文标题】:Python 2 - ValueError: not enough values to unpack (expected 6, got 1) 【发布时间】:2017-02-02 00:48:07 【问题描述】:我不断收到此错误,我不知道如何解决它,我需要帮助。
ValueError: not enough values to unpack (expected 6, got 1)
这就是我加载的方式
with open('objs.pickle', "rb") as f:
money, hunger, thirst, energy, wanted, gun = pickle.load(f)
这就是我的保存方式
with open('objs.pickle', 'ab') as f: # Python 3: open(..., 'wb')
pickle.dump([money, hunger, thirst, energy, gun, wanted], f)
【问题讨论】:
您在序列化数据时以ab
模式打开了文件。为什么?为什么要在 Python 3 上以不同的模式打开它?听起来您可能在此文件中有其他垃圾。
检查pickle.load(f)
返回的内容。它必须是单个元素。
它返回money变量
这个问题之前已经解决了。 ***.com/a/29559840/4399016
谢谢我认为它现在已经修复了
【参考方案1】:
pickle.load 只会加载它在文件中找到的第一个腌制对象。在您的情况下,这是一个具有两个以上键的字典,因此 x, y = pickle.load(...) 失败,因为它试图将字典的键解包为标识符 x 和 y。
with open("objs.pickle") as f:
first_dict = pickle.load(f) # file pointer is now at end of first object
second_dict = pickle.load(f) # read in second object
等等
如果你把这些词放在一个单独的对象中,你会更好,例如。一个元组并腌制那个单个对象。当您不知道文件中有多少腌制对象时,这会容易得多。
my_list = ['money', 'hunger', 'thirst', 'energy', 'wanted', 'gun']
tuple(my_list)
现在更容易腌制元组 my_list。
【讨论】:
TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”以上是关于Python 2 - ValueError:没有足够的值来解包(预期 6,得到 1)的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:没有足够的值来解包(预期为 2,得到 1)当试图在 python 中解包 dict 以使用 pandas 进行数据标记时
ValueError:pytorch 中的“str”python 维度太多
如何在没有字符串解析的情况下解析 Python 中的 ValueError?
python django ajax:ValueError:视图没有返回 HttpResponse 对象。它返回 None 而不是