gpt4 book ai didi

python - 检查 heapq 是否包含值

转载 作者:行者123 更新时间:2023-11-28 21:19:03 25 4
gpt4 key购买 nike

我正在使用 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 中添加方法 __eq__ 以便您可以使用关键字 in 检查成员资格(没有 __eq__代码 Element('A', 1) == Element('A', 1) 会给出 False:

class Element:
def __init__(self, key, value):
self.key = key
self.value = value

def __eq__(self, other):
return self.key == other.key

堆只是 python 中的列表,所以只需使用以下内容,__eq__ 将完成剩下的工作:

Element('A', 1) in heap

例子

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)

print Element('A', 1) in heap # True
print Element('A', 100) in heap # True
print Element('D', 1) in heap # False

关于python - 检查 heapq 是否包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316694/

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