【发布时间】:2017-10-18 22:17:15
【问题描述】:
所以我知道在使用 heapq 模块创建基本上包含(键,值)对的堆时,您可以使用元组而不是直接值。
我还知道,您可以覆盖 heapq 模块的__lt__ 比较运算符,以便在创建和维护堆时进行自己的比较。
有没有办法覆盖这个运算符,以便比较元组的两个值?例如,如果第一个值与以下内容相等,我试图让 heapq 比较元组的第二个值:
def __lt__(self, other):
return self[0] < other[0] if self[0] != other[0] else other[1] < self[1]
后半部分other[1] < self[1] 是故意颠倒过来的,因为逻辑是第二个值较大的元组应该被认为是两者中较小的一个。
感谢您提前提供任何见解!
编辑:我想我对术语“重载”和“覆盖”之间的区别感到困惑。我指的是覆盖。
【问题讨论】:
标签: python tuples comparison-operators