0

我正在做 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缺少一些东西。如何添加该部分?

4

1 回答 1

2

你传入tempPriorityQueue(temp)但唯一的参数PriorityQueuemaxsize,它应该是一个整数。默认值为0,这意味着队列在没有大小限制的情况下增长。

priori_queue = queue.PriorityQueue()
priori_queue.put(temp)
于 2019-02-08T18:11:15.527 回答