猿问

具有自定义类型类的优先级队列得到 TypeError

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


胡子哥哥
浏览 217回答 1
1回答

慕码人2483693

你传递temp的PriorityQueue(temp),但唯一的说法PriorityQueue是maxsize,这应该是一个整数。默认为0,这意味着队列在没有大小限制的情况下增长。priori_queue = queue.PriorityQueue()priori_queue.put(temp)
随时随地看视频慕课网APP

相关分类

Python
我要回答