字母计数字典

时间:2011-04-14 14:07:14

标签: python dictionary

我的作业问题是编写一个名为LetterCount()的Python函数,该函数将字符串作为参数并返回字母计数字典。但是,我的代码包括空格和逗号作为字典的一部分,我不想要。 你能帮帮我吗?如何从列表中删除空格?这是我的代码?

import string
def LetterCount(str):
    str= str.lower().strip()
    str = str.strip(string.punctuation)
    list1=list(str)
    lcDict= {}
    for l in list1:
        if l in lcDict:
            lcDict[l] +=1
        else:
            lcDict[l]= 1
    print lcDict

LetterCount("Abracadabra, Monsignor")

8 个答案:

答案 0 :(得分:3)

扩展python - Letter Count Dict

from collections import Counter

def LetterCount(text):
    return Counter(c for c in text.lower() if c.isalpha())

答案 1 :(得分:2)

您还可以检查l是否是字母字符(if l.isalpha()

示例:

   import string
    def LetterCount(str):
            str= str.lower().strip()
            str = str.strip(string.punctuation)
            list1=list(str)
            lcDict= {}
            for l in list1:
                    if l.isalpha():
                            if l in lcDict:
                                    lcDict[l] +=1
                            else:
                                    lcDict[l]= 1
            print lcDict

    LetterCount("Abracadabra, Monsignor")

答案 2 :(得分:1)

else分支中分配计数之前,应检查l是否为字母。只有当它是一个字母时才分配计数。

答案 3 :(得分:1)

从python doc(注意前导和尾随方面):

  

string.strip(s [,chars])返回一份副本   领先和的字符串   尾随字符已删除。如果是chars   省略或无,空白   字符被删除。如果给予和   不是没有,字符必须是一个字符串;该   字符串中的字符将是   剥离了两端   string调用此方法。

     

版本2.2.3中更改:字符   参数已添加。字符   参数不能在之前传递   2.2版本。

你应该看看str.replace()和DefaultDict:)

答案 4 :(得分:1)

您希望str.translate代替str.strip

答案 5 :(得分:1)

另一种选择是使用filter()

从字符串中删除所有非字母字符
filter(str.isalpha, "Abracadabra, Monsignor")
'AbracadabraMonsignor'

(请小心在代码中使用它 - 您使用相同名称的变量隐藏内置str。永远不要调用变量str。)

答案 6 :(得分:0)

我不想为你做功课,因为我不会这样做会对你有所帮助,但我会尽力让你朝着正确的方向努力,试试这个:

alphabet = map(chr, range(97, 123))

alphabet2 = list(string.lowercase)

alphabetalphabet2将包含列表中字母表中的所有小写字母。

感谢余下的eumiro

答案 7 :(得分:0)

对于字母计数,最好的方法是使用字典。

{'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}

输出:

prepend M