我试图用字典来计算给定字符串的词频。说:词频与词典理解
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