我的任務是:計算語料庫中的詞頻率時間過長
打印出語料庫中出現的所有單詞及其頻率的列表。該列表應通過詞頻降序排列(最頻繁的字在前)進行排序。」
def printWordFrequencies(index, vocab):
#print("Your task 3: print out a list of all the words that occur in the corpus and their frequencies. This list should be sorted by word frequencies in descending order (most frequent word first).")
newList = []
for i in index:
newList.append([i, len(index[i])])
sorted(newList)
return newList
index
是一本字典(關聯數組)映射的話他們的位置的列表,並vocab
是按字母順序排序列表語料庫中使用的詞彙。
我寫的功能有兩個問題:首先,它不正確排序。它提供了正確的字頻像[.., ['plot', 128], ['two', 166] , ..]
,但它不排序取決於它的頻率。
其次,它需要通過長時間運行。我假設這是因爲它試圖追加和排序這樣一個長列表,但我不知道如何解決這個問題。
一件小事是,我不知道爲什麼我需要vocab
作爲輸入參數。
你爲什麼要在循環內進行排序?在添加完所有項目後,只需進行一次排序。 Python會根據第一個元素對列表進行排序,所以如果要按長度排序,可以將一個鍵函數傳遞給'sorted()'。 https://docs.python.org/3/library/functions.html#sorted –