【问题标题】:python - Letter Count Dictpython - 字母计数字典
【发布时间】:2011-04-09 16:57:56
【问题描述】:

编写一个名为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 

现在可以使用此代码 导入集合 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}

【问题讨论】:

  • 看起来不错?有什么问题?
  • 无法将其小写,并且答案中不需要以 A 开头的最后一行
  • @Sarah:谷歌怎么样:encrypted.google.com/search?q=python+string+lowercase?如果您不需要第二行,请不要打印。
  • thanx 明白了.. 仍然对小写字母感到困惑
  • 在 python 中,您无法控制字典中元素的顺序。如果这就是错误的全部,那么您的答案可能是正确的。

标签: python


【解决方案1】:

你很接近。请注意,在任务描述中,不考虑字母的大小写。他们想要{'a': 5},而你有{'a': 4, 'A': 1}

所以你必须先将字符串转换为小写(I'm sure you will find out how)。

【讨论】:

  • @Sarah:正如 Winston 在他的评论中所说,Python 中的字典是无序的。你不能影响它的打印方式。你的答案可能是正确的。
【解决方案2】:

使用字典计算字母数:

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}

【讨论】:

    猜你喜欢
    • 2020-03-21
    • 2016-02-04
    • 2020-04-11
    • 2016-04-11
    • 1970-01-01
    • 2019-01-30
    • 2016-07-22
    • 2017-11-13
    • 2016-11-04
    相关资源
    最近更新 更多