具有自定义类型 class 的优先级队列获取 TypeError(“'>' 在 'PrioritizedItem' 和 'int' 的实例之间不支持”,)?

Priority queue with custom type class gets TypeError("'>' not supported between instances of 'PrioritizedItem' and 'int'",)?

我正在进行A* 搜索,需要将信息存储在优先级队列中。但我希望优先级队列只比较 我数据的一个字段 。所以我为先验队列设计了一个classPrioritizedItem。但是,我的程序永远保持 运行。我写了一些简单的测试代码来重现这个错误:

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("'>' not supported between instances of 'PrioritizedItem' and 'int'",)。看起来我的类型 class PriortizedItem 少了一些东西。如何添加那部分?

您在 PriorityQueue(temp) 中传递了 temp,但是 PriorityQueue 的唯一参数是 maxsize,它应该是一个整数。默认值为 0,这意味着队列的增长没有大小限制。

priori_queue = queue.PriorityQueue()
priori_queue.put(temp)