具有自定义类型 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)
我正在进行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)