我刚刚进入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)
答案 0 :(得分: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])
同样,有更短的方法可以做到这一点,但这种方式坚持非常基本的操作。
答案 1 :(得分: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))