Итак, я реализую модифицированную версию tr ie (https://en.wikipedia.org/wiki/Trie), используя dict (не используя классы-объекты). Структура basi c:
Node = [dictionary_of_child_nodes(),count,parent_Node]
И dictionary_of_child_nodes () имеет следующую структуру:
dictionary_of_child_nodes() = {child_character: child_Node}
Теперь добавляем элементы работают нормально, я напечатал tr ie, чтобы проверить и все в порядке. Скажем, для tr ie, содержащего abcd & abcdf , он печатает:
{'a': [{'b': [{'c': [{'d': [{'f': [{}, 1, {...}]}, 2, {...}]}, 2, {...}]}, 2, {...}]}, 2, {...}]}
Теперь я пытаюсь выполнить операцию, которая включает выбор узла с максимальным количеством ie узла [1]-го элемента.
Node = root
maxTemp = 0
for key in Node:
temp =Node[key][1]
if temp > maxTemp:
#do operation
Теперь иногда выдается ошибка (работает нормально для некоторых входов, один случай, когда выдается ошибка, когда я работаю с tr ie, содержащим 'abcd' и 'abcdf'):
if temp > maxTemp:
TypeError: списочные индексы должны быть целыми или кусочками, а не dict
Почему это происходит? Я попытался напечатать тип (Узел [ключ] [1]) , он показывает
int, type(Node) shows dict, type(Node[key]) shows list etc
.
На самом деле он работает нормально для всех входных данных, когда я не сравниваю Узел [ключ] [1] с другим элементом, к нему можно получить прекрасный доступ, но всякий раз, когда я сравниваю его, это дает ошибка для некоторого ввода. Что происходит?