“太多的价值无法解压”

“Too many values to unpack”

我有一个函数可以批量预处理图像以转发给caffe作为输入,它类似于下面和return两个变量。

 def processImageCrop(im_info, transformer, flowtransformer): 
      .....

      return processed_image, processed_flowimage

      class ImageProcessorCrop(object):
      def __init__(self, transformer, flowtransformer): 
        self.transformer = transformer
        self.flowtransformer = flowtransformer
        #self.flow = flow
      def __call__(self, im_info):
        return processImageCrop(im_info, self.transformer, self.flowtransformer) #, self.flow)

我用 pool.map 发送 im_info 参数调用此函数,并想按如下方式分配 returned 的两个变量,但出现异常 Too many values to unpack。两个变量的长度都应为 192。如何分配 returned 值?谢谢。我不想遍历每个元素,而是 return 两个值并将它们分配给两个变量。

结果['data'] , 结果['flowdata'] = pool.map(image_processor, im_info)

您的 pool.map 调用将转到 return 一个列表,其中包含对 im_info 中的每个值调用一次可调用对象 class 的结果。如果 im_info 有两个以上的值,将列表解包为两个变量的赋值将不起作用。

如果您真的想解包列表中的二元组,您可能想使用 zip 转置数据:

result['data'], result['flowdata'] = zip(*pool.map(image_processor, im_info))