>>> from heapq import heappush
>>> heap = []
>>> heappush(heap,(0,{"k":0}))
>>> heappush(heap,(0,{"k":1}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'dict' and 'dict'
这在python2和 python3的官方 heapq 文档中有所提及,该文档建议使用 DIY 实现heapq
来缓解此问题。
为什么会这样?这种冲突没有得到解决的根本原因是什么,因为这heapq
是一个非常古老的图书馆?对此有性能/其他问题吗?为什么我们不能只提供参数keep_old, keep_any
作为这个库的特性?