dict理解中的python语法错误

时间:2014-04-19 20:46:50

标签: python

这是我正在尝试做的事情:

我想在一个句子中计算字母频率。

到目前为止,这是我在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:+ =处的语法无效)。

感谢您的帮助和建议!

1 个答案:

答案 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})