0

所以在 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')]

不是'自己的工具狗'>'艺术零'吗?为什么heapq中的元组比较在这里不起作用?

4

1 回答 1

1

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

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

完整地说,在堆中,索引i处的值的子级位于索引2i+12i+2处。

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

于 2020-06-16T10:37:06.913 回答