import heapq
class Foo(object):
def __init__(self, x):
self._x = x
l = [Foo(1)]
heapq.heapify(l)
heapq.heappush(l, Foo(2))
这在Python 2.7中有效,但在3.x中无效。如文档中所述:
在未来的Python 3中,如果优先级相等且任务没有默认比较顺序,则对于(优先级、任务)对元组比较将出现问题。
在2.7的heapq.heappush
中如何处理不可比较对象?
heapq.heappush
如何处理不可比较的对象?”这两个对象是否通过某些看似随机的方式进行比较(例如它们的哈希值)?还是当它们被添加到末尾时,它们只是不会筛选堆?或者还有其他什么情况? - Alex