【发布时间】:2014-10-08 14:45:47
【问题描述】:
我正在使用 heapq 对象来存储我实现的类的对象。
import heapq
heap = []
element1 = Element('A', 1)
element2 = Element('B', 2)
element3 = Element('C', 3)
heapq.heappush(heap, element1)
heapq.heappush(heap, element2)
heapq.heappush(heap, element3)
在我的类 Element 中,我覆盖方法 __cmp__ 以确保值是优先级
def __cmp__(self, other):
return cmp(self.value, other.value)
现在我想写一个函数,它检查堆是否包含元素,这样
如果我想检查element = Element('A', 1) 是否在堆中,答案将是True,如果我要检查element = Element('A',100),答案也将是True,但如果我想检查element = Element('D',1),答案将是是False。
我怎样才能实现这样的方法?是否可以在不调用pop() 方法的情况下检查heapq 的元素?
【问题讨论】:
-
Element是否只是用于此堆的值及其优先级的包装器,还是出于其他原因必须使用此类? -
你能补充一点关于这个类的实际用途的信息吗?这是针对 python 2 还是 3 的?
-
@tobias_k 因为其他原因我不得不使用这个类
-
@Ziva 在这种情况下,您可以特别注意以不一致的方式实现
eq和cmp不会在其他地方造成问题。
标签: python queue priority-queue