为什么 Python 的 heapq 的元组比较不能正常工作?

Why does Python's heapq's tuple comparison not work as it supposed to?

所以在 Python 当我输入

from heapq import heappush
a=[]
heappush(a,('art zero', 'let3 art zero'))
heappush(a,('own kit dig', 'let2 own kit dig'))
heappush(a,('art can', 'let1 art can'))
print(a)

它给出

[('art can', 'let1 art can'), ('own kit dig', 'let2 own kit dig'), ('art zero', 'let3 art zero')]

不是'own kit dog'>'art zero'吗?为什么heapq中的元组比较在这里不起作用?

堆与排序列表不同。堆只保证一个元素不大于其children的值。

您要比较的两个值是同级值。堆中的兄弟值之间没有特定的关系。你唯一能知道的是,他们俩都不比他们的parent.

为了完整起见,在堆中索引 i 处的值的 children 位于索引 2i+12i+2.

当您从堆中 heappop 值时,您 以正确的顺序获取它们。