python - 字母计数字典

0 投票
3 回答
3788 浏览
提问于 2025-04-16 15:24

写一个叫做 LetterCount() 的Python函数,这个函数接收一个字符串作为参数,然后返回一个字典,里面是每个字母出现的次数。

这一行:

print LetterCount("Abracadabra, Monsignor")

应该输出:

{'a': 5, 'c': 1, 'b': 2, 'd': 1, 'g': 1, 'i': 1, 'm': 1, 'o': 2, 'n': 2, 's': 1, 'r': 3}

我尝试了:

import collections
c = collections.Counter('Abracadabra, Monsignor')
print c
print list(c.elements())

我得到的结果看起来像这样

{'a': 4, 'r': 3, 'b': 2, 'o': 2, 'n': 2, 'A': 1, 'c: 1, 'd': 1, 'g': 1, ' ':1, 'i':1, 'M':1 ',':1's': 1, }
['A', 'a','a','a','a','c','b','b','d','g', and so on 

好的,现在用这段代码 import collections c = collections.Counter('Abracadabra, Monsignor'.lower())

打印 c 我得到的是 {'a': 5, 'r': 3, 'b': 2, 'o': 2, 'n': 2, 'c': 1, 'd': 1, 'g': 1, ' ': 1, 'i': 1, ',': 1, 's': 1, }

但正确的答案应该是 {'a': 5, 'c': 1, 'b': 2, 'd': 1, 'g': 1, 'i': 1, 'm': 1, 'o': 2, 'n': 2, 's': 1, 'r': 3}

3 个回答

0

也许这个代码是用来统计字母的数量,排除空格,并且不考虑字母的大小写,然后按字母顺序排列出来的?

    t = "The cat is out of the bag."
    word_count = {}

    for i in t.casefold():
        if i.isalnum(): 
            word_count[i] = word_count.get(i,0)+1

    for letter, count in sorted(word_count.items()):
        print(letter, count)

输出结果: a 2 b 1 c 1 e 2 f 1 g 1 h 2 i 1 o 2 s 1 t 4 u 1

1

使用字典来统计字母的数量:

s = "string is an immutable object"
d = {}
for i in s:
    d[i] = d.get(i,0)+1

print d

输出结果:

{'a': 2, ' ': 4, 'c': 1, 'b': 2, 'e': 2, 'g': 1, 'i': 3, 'j': 1, 'm': 2, 'l': 1, 'o': 1, 'n': 2, 's': 2, 'r': 1, 'u': 1, 't': 3}
4

你快到了。注意任务描述中,字母的大小写是不重要的。他们想要的是 {'a': 5},而你得到的是 {'a': 4, 'A': 1}

所以你需要先把字符串转换成小写字母(我相信你能找到方法)。

撰写回答