Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建包含类实现的优先级队列?_Python_Priority Queue - Fatal编程技术网

Python 如何创建包含类实现的优先级队列?

Python 如何创建包含类实现的优先级队列?,python,priority-queue,Python,Priority Queue,我得到了我实现的任务类,我想将所有任务插入优先级队列,python中有一个吗?我是否需要在类中实现一些func以使其具有可比性 每个类都有优先级编号。Python中确实有一个优先级队列,请参见此处: 下面是一个简单的例子: from queue import PriorityQueue q = PriorityQueue() q.put((2, 'code')) q.put((1, 'eat')) q.put((3, 'sleep')) while not q.empty(): n

我得到了我实现的任务类,我想将所有任务插入优先级队列,python中有一个吗?我是否需要在类中实现一些func以使其具有可比性


每个类都有优先级编号。

Python中确实有一个优先级队列,请参见此处:

下面是一个简单的例子:

from queue import PriorityQueue

q = PriorityQueue()

q.put((2, 'code'))
q.put((1, 'eat'))
q.put((3, 'sleep'))

while not q.empty():
    next_item = q.get()
    print(next_item)

# Result:
#   (1, 'eat')
#   (2, 'code')
#   (3, 'sleep')
您也可以使用heapq


在您的数据结构类中,他们将讨论“优先级队列”这个和“优先级队列”那个,但从来没有提到“优先级队列”基本上只是一个总是排序的列表(这样,如果您从中弹出一个元素,您总是会得到列表中优先级最高的元素)。这对你来说是一件相当容易的事情,你可以自己设计;出于一些想法。我的类包含优先级号。我需要在我的类中实现可比较的函数吗?你不需要,只需将优先级号和对象插入队列。就像上面的示例中,整数值是优先级号不确定,但我认为OP的问题更多的是让他的类实例与队列中的优先级相比较。@martineau,他提到他在类中有一个优先级编号属性,所以也许他不需要。但他接着提到“在每个类中”…,我更倾向于假设在同一对象的每个实例中,也许你是对的,因为他确实说过“每个类都有优先级号”,这意味着该属性可以与内置的
PriorityQueue
结合使用。