2012-06-11 45 views
2

我正在做一個Python類的相當簡單的作業問題,涉及字符,單詞和它們的相對頻率等各種統計數據。此刻我試圖分析一串文本,並獲取文本中每個唯一字詞的列表,然後列出其使用次數。我的Python的認識非常有限(或與此有關的任何語言),因爲這是一個入門課程,因此只拿出了下面的代碼:Python:獨特的單詞和它們的頻率降序

for k in (""",.’?/!":;«»"""): 
    text=text.replace(k,"") 
text=text.split() 
list1=[(text.count(text[n]),text[n]) for n in range(0,len(text))] 
for item in sorted(list1, reverse=True): 
    print("%s : %s" % (item[1], item[0])) 

這不幸的是打印出的文本中的每個單詞(按照出現順序),接着是其次數n,n次。顯然這是無用的,我想知道是否可以添加一些漂亮的代碼給我已經寫過的代碼,讓每個單詞只出現一次,然後最終以降序排列。像我見過的所有其他問題都使用了大量我們沒有學過的代碼,所以我認爲答案應該相對簡單。

+0

您認爲您如何在「頻率」上排序(..)'排序? – SuperSaiyan

+0

您是否已經熟悉字典(詞典,{})?你可以使用一個來將單詞與它們的出現次數相關聯。正如Martijn所建議的,Counter是一種專門的字典。 –

+0

另請參閱:http://stackoverflow.com/questions/4088265/word-frequency-count-using-python – BioGeek

回答

6

看看collections.Counter。您可以使用它來計算您的單詞頻率,並按照most_common方法幫助您按排序順序打印列表。

(沒有示例代碼,因爲這是一個homework question,你就必須做一些工作自己)。

+2

哦,我已經在編寫示例代碼。但[[tag:homework]]標籤可能是最好的答案。 –

+0

太棒了,我不確定我們是否應該使用字典,但Counter肯定是我正在尋找的。非常感謝你。 –