首页 > 解决方案 > 在一个函数中,ValueError: too many values to unpack (expected 2)

问题描述

我有一个功能:

def load_data(datafile, categories=None, cat_columns=None):
  # Some stuff
  return (data_x, data_y, categorical_columns) + ((ohe.categories_, ) if not categories else ())

然后我调用它两次:

training_x, training_y, cat_columns, categories = loader.load_data(
    'data/training.csv')

test_x, test_y = loader.load_data(
    'data/test.csv', categories=categories, cat_columns=cat_columns)

然后我得到了可怕的ValueError: too many values to unpack (expected 2)错误,特别是我第二次调用它(test_x,test_y)

我究竟做错了什么?

标签: python

解决方案


x,y = [1,2,3] # x=1, y=2 but we didn't have any variable to store element 3

上面写的行会产生一个ValueError : too many values to unpack

就像这里我们试图解包列表元素并将它们分配给变量,但是我们在列表中有三个元素要解包,只有两个变量来存储值,为了解决这个问题,我们必须再提供一个变量。

x,y,z = [1,2,3] # here we have x=1, y=2, z=3 

推荐阅读