7

我刚刚进入 Python,我正在构建一个程序来分析一组单词并返回每个字母在文本中出现的次数。即'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)
4

2 回答 2

13

有很多方法可以做到这一点。大多数使用字典(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

有更短的方法来写它,我相信其他人会指出,但先学习这种方法,直到你理解它。这坚持非常简单的操作。

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

for letter in sorted(count):
    print(letter, count[letter])

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

于 2013-09-14T03:22:19.980 回答
12

您可以使用 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))
于 2013-09-14T03:20:02.380 回答