我試圖用字典來計算給定字符串的詞頻。說:詞頻與詞典理解
s = 'I ate an apple a big apple'
我知道計算詞頻的最佳方法可能是使用collections.Counter
。但我想知道我是否可以通過使用詞典理解來解決這個問題。
我原來的方法(無字典解析)是
dict = {}
for token in s.split(" "):
dict[token] = dict.get(token, 0) + 1
,它工作正常:
dict
{'I': 1, 'a': 1, 'an': 1, 'apple': 2, 'ate': 1, 'big': 1}
我試圖使用字典理解這一點,像
dict = {}
dict = {token: dict.get(token, 0) + 1 for token in s.split(" ")}
但是這不起作用。
dict
{'I': 1, 'a': 1, 'an': 1, 'apple': 1, 'ate': 1, 'big': 1}
字典理解有什麼問題?是否因爲我在理解中使用了自己,所以每次我在dict.get('apple', 0
)理解時,我會得到0
?但是,我不知道如何測試這個,所以我不是100%確定的。
P.S.如果它有什麼區別,我正在使用python 3.
這是什麼'collections.Counter'(一個字典子類型)很久以前解決了 –
我不會使用字典作爲變量名稱,因爲它是一個內置的,你可以通過這樣做破壞 – e4c5
變量'dict' isn在理解完全計算之前不會進行更新,所以「字典」。get(token,0)'在理解中只會查詢前一行的空字典。 – khelwood