Я пытаюсь найти максимальное значение (я) в словаре, и мой подход состоит в том, чтобы перебирать и проверять наибольшие значения и составлять список пары наибольшее значение / ключ и всего, что эквивалентно ему, из словаря и У меня есть следующее ...
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
, по крайней мере, для первой итерации. Однако я получаю следующий вывод из операторов print ...
-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,...}