我正在尝试使用自定义排序谓词构建堆。由于输入的值属于“用户定义”类型,因此我无法修改其内置比较谓词。有没有办法做类似的事情:h = heapq.heapify([...], key=my_lt_pred)h = heapq.heappush(h, key=my_lt_pred)甚至更好的是,我可以将heapq函数包装在自己的容器中,这样就不需要继续传递谓词。
3 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
这两个答案的局限性在于它们不允许将领带视为领带。在第一个中,通过比较项目来打破联系,在第二个中,通过比较输入顺序来打破关系。让领带成为领带会更快,而且如果领带很多,这可能会带来很大的不同。基于上面和文档,尚不清楚是否可以在heapq中实现。奇怪的是,heapq不接受键,而在同一模块中从它派生的功能却接受。
PS:如果您点击第一个评论中的链接(“可能重复...”),那么还有另一种定义le的建议,这似乎是一种解决方案。
添加回答
举报
0/150
提交
取消