gpt4 book ai didi

Python优先队列检查项目是否存在而不循环

转载 作者:行者123 更新时间:2023-11-30 23:34:20 25 4
gpt4 key购买 nike

import heapq
class PriorityQueue:

def __init__(self):
self.heap = []

def push(self, item, priority):
pair = (priority,item)
heapq.heappush(self.heap,pair)

def pop(self):
return heapq.heappop(self.heap)

def isEmpty(self):
return len(self.heap) == 0

def clear(self):
while not (self.isEmpty()):
self.heap.pop()

def getHeap(self):
return self.heap

def getLeng(self):
return len(self.heap)

def exists(self, item):
return len(list(set(self.heap) & set(item)))

pq = PriorityQueue()
x = "test"
pq.push(x,1)
print pq.exists(x)

当它应该打印 1 时,它打印了 0,因为一个带有 x 的集合和另一个带有 x 的集合的交集应该是 1

我是否忽视了事情?
为什么打印 0 而不是 1?

最佳答案

您正在将(priority,value)的元组推送到堆,但希望exist方法仅对值起作用,因此您应该从堆中获取仅值列表/迭代器,像这样的东西:

def exists(self, item):
return item in (x[1] for x in self.heap)

关于Python优先队列检查项目是否存在而不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com