2016-11-14 59 views
0

我做了一個函數,用於從文件中的單詞中創建一個詞典,其值是單詞的頻率,名爲read_dictionary。我想現在做的是通過計數打印文件的頂部三個字另一個函數,所以它看起來是這樣的: 「在文件名中前三名的話是: 字:數 字:數 字:號」閱讀文件並使用python中的字典獲取前3個詞

這是我的代碼是:

def top_three_by_count(fileName): 

    freq_words = sorted(read_dictionary(f), key = read_dictionary(f).get, 
    reverse = True) 

    top_3 = freq_words[:3] 
    print top_3 
print top_three_by_count(f) 

回答

0

您可以使用collections.Counter

from collections import Counter 
def top_three_by_count(fileName): 
     return [i[0] for i in Counter(read_dictionary(fileName)).most_common(3)] 

其實你不需要read_dictionary()功能都沒有。下面的代碼片段爲你做了整個事情。

with open('demo.txt','r') as f: 
    print Counter([i.strip() for i in f.read().split(' ')]).most_common(3) 
+0

它使返回一個空白列表 – djderik

+0

@djderik,什麼是'打印read_dictionary(F)'的輸出?你有沒有收到一本有效的字典? –

+0

是的,它打印出一本字典。而fileName只是一個佔位符,當我在函數創建後這樣定義函數時,我只是插入實際的文件名,在本例中是f。它適用於read_dictionary的函數 – djderik