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

2024-06-25 19:28:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在进行*搜索,需要在优先级队列中存储信息。但是我希望优先级队列只比较数据的一个字段。所以我为priori queue设计了一个类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

enter image description here

初始化后,我的优先级队列prior_queue仍然是空的。手动添加元素temp甚至会给我一个错误TypeError(“'priorizedItem”和“int”实例之间不支持“>;”)。看起来我的类型类PriortizedItem缺少一些部分。如何添加该部分?在


Tags: pathimportfalsefield队列queue错误trace
2条回答

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

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

相关问题 更多 >