为什么Python的heapq元组比较不能按预期工作?
所以在Python中,当我键入为什么Python的heapq元组比较不能按预期工作?,python,tuples,string-comparison,heapq,Python,Tuples,String Comparison,Heapq,所以在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
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中的元组比较在这里不起作用?堆与排序列表不同。堆只保证元素不大于其子元素的值 正在比较的两个值是同级值。堆中的同级值之间没有特定的关系。你能知道的唯一一件事是他们都不比他们的父母差 完整地说,在堆中,索引i处的值的子级位于索引2i+1和2i+2
当您从堆中堆取值时,您将以正确的顺序获取它们。Thx。这很有帮助。我是在大学里学的,但完全忘记了堆是通过创建一棵树来分类的。除非我使用heappop,否则堆列表实际上不会被排序。