我试图在字典中找到最大值,而我的方法是遍历并检查最大值,并列出最大值/关键字对以及字典中与之等效的所有内容,我有以下...
def foo(class_sum, input_object): # Predicts the class x is a member of given probability dictionary
probabilities = calc_class_probs(class_sum, input_object) # Returns a dictionary with probability elements
best_label, best_perc = list(), list()
best_perc.append(-1)
print(best_perc[0])
for val in probabilities:
print(probabilities[val])
if probabilities[val] > best_perc[0]:
del best_label
del best_perc # Empty list in case unwanted elements are present
best_label, best_perc = val, probabilities[val] # update with new best
elif probabilities[val] == best_perc:
best_label.append(val)
best_perc.append(probabilities[val])
return best_label, best_perc
因此,我希望至少在第一次迭代中,if probabilities[val] > best_perc[0]:
的评估结果为7.591391076586993e-36 > -1
。但是我从打印语句中得到以下输出...
-1
7.591391076586993e-36
编辑:它似乎在第二次迭代中失败,这可能是由于del
语句造成的吗?
0 7.591391076586993e-36
1 7.297754873023128e-36
...
IndexError: invalid index to scalar variable.
和这个错误...
if probabilities[val] > best_perc[0]:
IndexError: invalid index to scalar variable.
为什么它可以打印值而不在这里索引它们?请注意probabilities
是一本字典,其键具有如下所示的单个概率值。
{'0': 7.59139e-36, '1': 7.2977e-36,...}
答案 0 :(得分:2)
我相信您的问题在这里:
best_label, best_perc = val, probabilities[val]
在执行第一个'if'best_lavel
并且best_perc
不再列出之后,因此您无法访问best_perc[0]
。
您可以用
替换best_label, best_perc = [val], [probabilities[val]]
注意,当您在字典中进行迭代时,您将遍历键而不是值。 您可以按键和值进行迭代:
for key, val in dictionary.items():