我有一个功能:
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)
我在做什么错了?
答案 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