Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Data structures 在Python中搜索PriorityQueue中的元素_Data Structures_Queue_Priority Queue - Fatal编程技术网

Data structures 在Python中搜索PriorityQueue中的元素

Data structures 在Python中搜索PriorityQueue中的元素,data-structures,queue,priority-queue,Data Structures,Queue,Priority Queue,我刚刚从Queue模块开始在python中使用PriorityQueue模块,但我很难检查PriorityQueue中是否存在元素。下面是我的代码片段 from queue import PriorityQueue q = PriorityQueue() q.put(3) q.put(2) q.put(1) ok = 4 if ok in q: print("Found") 但是我得到了下面的错误 TypeError:类型为“PriorityQueue”的参数不可编辑 请告诉我如何迭代

我刚刚从Queue模块开始在python中使用PriorityQueue模块,但我很难检查PriorityQueue中是否存在元素。下面是我的代码片段

from queue import PriorityQueue
q = PriorityQueue()
q.put(3)
q.put(2)
q.put(1)
ok = 4
if ok in q:
    print("Found")
但是我得到了下面的错误

TypeError:类型为“PriorityQueue”的参数不可编辑

请告诉我如何迭代并检查python中PriorityQueue模块中是否存在元素

疑问2:-
在上面的代码片段中,PriorityQueue默认为MIN\u HEAP,我应该使用什么语法我想要MAX\u HEAP

优先级队列是不可设置的,因此您必须弹出所有元素,然后将它们推回,以查看其中是否有元素。另一种选择是使用数组跟踪优先级队列中的元素

#假设所有元素都在0~999范围内
从队列导入优先级队列
cnt=[0]*1000
q=优先级队列()
q、 付诸表决(3)
cnt[3]+=1
q、 付诸表决(2)
cnt[2]+=1
q、 付诸表决(1)
cnt[1]+=1
ok=4
如果cnt[ok]:
打印(“找到”)
对于疑问2,获取最大堆的最简单方法是插入元素的负数

max_heap = PriorityQueue()

max_heap.put(-10) // 10
max_heap.put(-20) // 20
max_heap.put(-15) // 15
max_heap.put(-27) // 27

while not max_heap.empty():
    print(-1*max_heap.get())

感谢您的回答,我刚刚了解了如何搜索PriorityQueue中是否存在元素。您可以尝试以下语法。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。如果q.queue中的ok:print(“元素已找到”)