Приоритетная очередь с пользовательским классом типа получает TypeError(">" не поддерживается между экземплярами "PrioritizedItem" и "int" ",)?
Я делаю A* поиск и мне нужно хранить информацию в приоритетной очереди. Но я хочу, чтобы приоритетная очередь сравнивала только одно поле моих данных. Итак, я разработал класс PrioritizedItem
для априорной очереди. Тем не менее, моя программа работает вечно. Я написал простой тестовый код для воспроизведения этой ошибки:
from dataclasses import dataclass,field
import queue
@dataclass(order=True)
class PrioritizedItem:
hint: float
current: tuple=field(compare=False)
path: list=field(compare= False)
trace=[(0, 0)]
temp=PrioritizedItem(hint=14, current=(0, 0) ,path=trace)
priori_queue = queue.PriorityQueue(temp ) #queue contains current location
priori_queue
После инициализации моя очередь приоритетов prior_queue
все еще пусто Добавить элемент вручную temp
даже выдает ошибку TypeError(">" не поддерживается между экземплярами "PrioritizedItem" и "int" ",). Похоже, мой класс типа PriortizedItem
отсутствует какой-то кусок. Как добавить эту часть?
1 ответ
Вы проходите temp
в PriorityQueue(temp)
, но единственный аргумент PriorityQueue
является maxsize
, который должен быть целым числом. По умолчанию 0
, что означает, что очередь растет без ограничения размера.
priori_queue = queue.PriorityQueue()
priori_queue.put(temp)