【发布时间】:2014-04-14 18:36:04
【问题描述】:
我正在开发一个图像搜索引擎应用程序,我将代码放在单独的 .py 文件中,并且运行良好。但我想优化它。当我使用下面的函数时,它给了我一个 ValueError。
我的代码是这样的(只有我采取的相关行):
def example():
i = 0
resultlist_key = []
result_list = list()
a_list = list()
b_list = list()
a_list.append(feature_matrix_ip)# feature_matrix_ip contains features of the query image
while i < 70:
b_list.append(feature_matrix_db[i])# feature_matrix_db contains features of img. in DB
dist = distance.euclidean(a_list,b_list[i])
result_list.append(dist)
resultlist_key = OrderedDict(sorted(enumerate(result_list),key=lambda x: x[0])).keys()
i = i + 1
res_lst_srt = {'values': result_list,'keys':resultlist_key}
res_lst_srt['values'], res_lst_srt['keys'] = zip(*sorted(zip(res_lst_srt['values'], res_lst_srt['keys'])))# sorting according to the least distance and the key will not change
key = res_lst_srt['keys']
当我分析时,我没有得到任何解决方案。我的错误陈述是:
%run "D:/6th sem/Major project/Code/frame.py"
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1.0.3.1262.win-x86\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "D:\6th sem\Major project\Code\frame.py", line 323, in matching_image
res_lst_srt['values'], res_lst_srt['keys'] = zip(*sorted(zip(res_lst_srt['values'], res_lst_srt['keys'])))
ValueError: need more than 0 values to unpack
我不知道这个错误是否来自命名问题。当代码在函数外部时它会正常工作,但我希望代码在函数内部,以便优化程序。
有什么解决这个错误的建议吗?
【问题讨论】:
-
如果您在出现错误的行之前执行
print zip(*sorted(zip(res_lst_srt['values'], res_lst_srt['keys']))),输出是什么? -
@Kevin 当我尝试打印 ti 时,我得到了这个结果
{'keys': [], 'values': []},但是当我尝试在函数之外打印 sane 时,我得到了正确的键和值。跨度> -
你确定这是
print zip(...的结果吗?因为那是一个字典,而 zip 只返回一个列表。 -
我和@Kevin 在一起...您的
print语句显示了一个字典,而zip永远不会返回...您不是在某个地方缺少[吗?无论如何,让我们尝试缩小问题范围:在给出错误的行上添加一行print "i: %s, rest_lst_srt: %s" % (i, rest_lst_srt)并将输出添加到您的问题中(这将显示哪些迭代失败以及原因)。另外,在我看来,您正在尝试执行stackoverflow.com/a/2733056/289011 中描述的操作,如果是这种情况,您的代码可能会减少。您确定需要OrderedDict来对result_list进行排序吗? -
@user3483746, 对...这只是让代码很难遵循对我来说 :-D无论如何...如何关于评论的另一部分? (
print "i %s...东西?)
标签: python python-2.7