1
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)     

x を含むセットと x を含む別のセットの交点は 1 であるため、1 を出力する必要があるときに 0 を出力しました。

私は物事を見落としていますか?
1 ではなく 0 を出力するのはなぜですか?

4

1 に答える 1

3

のタプルを(priority,value)ヒープにプッシュしていますが、exist メソッドを値に対してのみ機能させたい場合は、次のようにヒープから値のみのリスト/イテレータを取得する必要があります。

def exists(self, item):
   return item in (x[1] for x in self.heap)
于 2013-08-12T07:54:20.643 に答える