Список различных типов данных в Python ведет себя странно - PullRequest
0 голосов
/ 08 января 2020

Итак, я реализую модифицированную версию 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] с другим элементом, к нему можно получить прекрасный доступ, но всякий раз, когда я сравниваю его, это дает ошибка для некоторого ввода. Что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...