Python 计算字符串中字符的出现次数

Python 计算字符串中字符的出现次数,python,Python,我刚刚开始学习Python,我正在构建一个程序来分析一组单词,并返回每个字母在文本中出现的次数。i、 e'A:10、B:3、C:5……等等。到目前为止,它工作得很好,只是我正在寻找一种压缩代码的方法,所以我没有把程序的每个部分写26次。我的意思是 print("Enter text to be analyzed: ") message = input() A = 0 b = 0 c = 0 ...etc for letter in message: if letter == "a"

我刚刚开始学习Python,我正在构建一个程序来分析一组单词,并返回每个字母在文本中出现的次数。i、 e'A:10、B:3、C:5……等等。到目前为止,它工作得很好,只是我正在寻找一种压缩代码的方法,所以我没有把程序的每个部分写26次。我的意思是

print("Enter text to be analyzed: ")
message = input()

A = 0
b = 0
c = 0
...etc

for letter in message:

    if letter == "a":
        a += 1
    if letter == "b":
        b += 1
    if letter == "c":
        c += 1
    ...etc

print("A:", a, "B:", b, "C:", c...etc)

您可以使用Counter,但@TimPeters可能是正确的,最好还是坚持基本的

from collections import Counter

c = Counter([letter for letter in message if letter.isalpha()])
for k, v in sorted(c.items()):
    print('{0}: {1}'.format(k, v))

有很多方法可以做到这一点。大多数人使用字典(
dict
)。比如说,

count = {}
for letter in message:
    if letter in count:  # saw this letter before
        count[letter] += 1
    else:   # first time we've seen this - make its first dict entry
        count[letter] = 1
我相信其他人会指出,有一些较短的写作方法,但首先要研究这种方法,直到你理解它。这需要非常简单的操作

最后,您可以通过(例如)显示它:


同样,有一些较短的方法可以做到这一点,但这种方法坚持非常基本的操作。

使用dict而不是26个变量。你的答案很好!这是Python专家会做的。我希望通过研究我的“坚持基本原则”的答案,可以帮助海报了解更多关于Python语言的知识-
集合。Counter几乎可以神奇地解决整个问题;-)是 啊我想我现在会坚持基本原则,但我想我可能会尝试尝试一下!以后可能有用。谢谢这正是我一直在寻找的,它工作得非常完美!谢谢,我们还可以删除if-else,如
count[letter]=count.setdefault(letter,0)+1
。正确吗?是的,
setdefault()
工作正常-这就是它的用途。但新来者更难理解,所以我在这里避免了:-)
for letter in sorted(count):
    print(letter, count[letter])