在函数中,ValueError:太多值无法解包(预期2)

时间:2019-06-28 15:57:50

标签: python

我有一个功能:

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)

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

if not categories else () 如果为类别,则返回一个空元组。充其量,这只是一个价值。您不能将一个空的元组拆成两个值test_x, test_y

我不确定您要在这里做什么,但是您可以通过修改它来解决

return ... if not categories else (None, None)

答案 1 :(得分:1)

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

以上编写的代码行将产生 ValueError:太多值无法解包

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

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