了解heapq推送pop

2024-09-26 17:55:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是按前十名的值对字典进行排序。使用堆似乎是合适的。所以我读了关于Pythonheapq的文章,写下了:

def top_ten_hash_tags(ranked_hash_tags):
    desc_hash_tags = []
    for hash_tag, rank in ranked_hash_tags.items():
        heapq.heappush(desc_hash_tags, (rank, hash_tag))
    top_ten = desc_hash_tags[0:10]
    while top_ten:
        i = heapq.heappop(top_ten)
        rank, hash_tag = i[0], i[1]
        print hash_tag.encode('utf-8'), (rank *-1.0)

它给出了几乎正确的结果,如此接近事实上,我没有注意到它是错误的。在

过了一会儿,我用一些借来的代码对它进行了测试:

^{pr2}$

注意到我的错误。我的原始代码出了什么问题?在


Tags: 代码目标字典排序toptag错误tags
1条回答
网友
1楼 · 发布于 2024-09-26 17:55:28

堆中的前10个条目并不总是包含最低的10个键。为了得到最低的10次,你必须从(整个)堆中弹出10次。在

(如果前N个条目总是包含N个最低的条目,那么您将得到一个排序列表,而不是一个堆!)在

一般来说,不要使用heapq函数修改表示堆的列表。在

相关问题 更多 >

    热门问题