如何使heapq根据特定属性评估堆?

发布于 2021-01-29 18:42:16

我希望保留一堆对象,而不仅仅是数字。它们将具有一个整数属性,堆可以根据该属性排序。在python中使用堆的最简单方法是heapq,但是在使用heapq时如何告诉它按特定属性排序?

关注者
0
被浏览
39
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    heapq以相同的方式list.sort对对象进行排序,因此只需__cmp__()在类定义中定义一个方法,该方法会将自身与同一类的另一个实例进行比较:

    def __cmp__(self, other):
        return cmp(self.intAttribute, other.intAttribute)
    

    在Python 2.x中工作。

    在3.x中使用:

    def __lt__(self, other):
        return self.intAttribute < other.intAttribute
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看