Я пытаюсь определить обычный метод, чтобы сделать упорядоченную вставку в приоритетную очередь в python, но не получаю ожидаемых результатов. После определения метода вставки в очередь, как показано ниже:
def insert(self, node):
if isinstance(node, treeNode):
heapq.heappush(self._frontier, (node._f, node))
else:
print("Error. It is not a node.")
И реализация следующего lt в классе 'node':
def __lt__(self, other):
return self._f < other._f
Вставка не выполняется значением атрибута 'f', которое я хочу сделать, вставлять в порядке возрастания, определяемом этим значением. Любая помощь будет высоко ценится.
Ex сбоя:
[(141.09530289033592, <treeNode.treeNode object at 0x7f08bb840fd0>), (484.8315227978057, <treeNode.treeNode object at 0x7f08bb849da0>), (390.0514031446352, <treeNode.treeNode object at 0x7f08bb840e48>)]
Он только помещает в первую позицию самое низкое значение, что имеет смысл, поскольку используется приоритетная очередь, но затем следующие не сортируются пользовательским методом, который я хочу объявить.