python - 字母计数字典
写一个叫做 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}
。
所以你需要先把字符串转换成小写字母(我相信你能找到方法)。