这是我正在尝试做的事情:
我想在一个句子中计算字母频率。
到目前为止,这是我在python中的代码:
for i in line:
if i in my_count.keys():
my_count[i]+=1
else:
my_count[i]=1
有没有办法用dict理解来实现相同的目标,我们对列表理解也一样吗?
我曾想过如下:
my_count = { x:(my_count[x]+=1) for x in line if x in my_count else x:1 }
但是这没有通过语法检查(SyntaxError:+ =处的语法无效)。
感谢您的帮助和建议!
答案 0 :(得分:4)
Counter in collections似乎可以做到这一点。
In [1]: line = 'the quick brown fox jumps over the lazy dog'
In [2]: from collections import Counter
In [3]: c = Counter(line)
In [4]: c
Out[4]: Counter({' ': 8, 'o': 4, 'e': 3, 'h': 2, 'r': 2, 'u': 2, 't': 2, 'a': 1, 'c': 1, 'b': 1, 'd': 1, 'g': 1, 'f': 1, 'i': 1, 'k': 1, 'j': 1, 'm': 1, 'l': 1, 'n': 1, 'q': 1, 'p': 1, 's': 1, 'w': 1, 'v': 1, 'y': 1, 'x': 1, 'z': 1})