Python 字母计数词典

Python 字母计数词典,python,dictionary,Python,Dictionary,我的家庭作业问题是编写一个名为LetterCount()的Python函数,该函数将字符串作为参数并返回字母计数字典。但是,我的代码包含空格和逗号,作为字典的一部分,这是我不想要的。 你能帮帮我吗。如何从列表中删除空白?这是我的密码 import string def LetterCount(str): str= str.lower().strip() str = str.strip(string.punctuation) list1=list(str) lcDi

我的家庭作业问题是编写一个名为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")

else
分支中分配计数之前,应检查
l
是否为字母。如果是字母,则只指定计数。

我不想为你做家庭作业,因为我不认为这对你有帮助,但我会尝试引导你正确的方向,尝试以下方法:

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

alphabet
alphabet2
将包含列表中字母表中的所有小写字母

谢谢剩下的

来自python文档(注意前面和后面的方面):

strip(s[,chars])返回一个副本 带前导和后导的字符串的 删除尾随字符。如果查 如果省略或无,则为空白 字符将被删除。如给予及 不是无,字符必须是字符串;这个 字符串中的字符将被删除 从电缆两端剥离 调用此方法的字符串

在版本2.2.3中更改:字符 添加了参数。查尔 无法在此之前传入参数 2.2版本


您应该查看str.replace()和DefaultDict:)

您想要的是
str.translate
而不是
str.strip
您还可以检查l是否是字母字符(
如果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")

另一个选项是使用
filter()
从字符串中删除所有非字母字符:

(在代码中使用时要小心--您使用了同名变量来隐藏内置的
str
。切勿调用变量
str

扩展:


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

s = "string is an immutable object"
def letter_count(s):
    d = {}
    for i in s:
        d[i] = d.get(i,0)+1
    return 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}

看起来很可疑,是的,在我发布我的问题之前我就看到了,但我们从来没有在课堂上做过这个代码。所以我是按照我知道的方式来做的,我使用了l的.isalpha()方法,它成功了。不去想那件事是愚蠢的。谢谢,我是编程新手,有时会忘记一些细节。你应该教他钓鱼!:)在这类问题中,如果你将OP指向
l.isalpha()
,应该足够了,因为调查是学习过程的一部分。。。没有伤害当然,我不怀疑你的意图是好的!
from collections import Counter

def LetterCount(text):
    return Counter(c for c in text.lower() if c.isalpha())
s = "string is an immutable object"
def letter_count(s):
    d = {}
    for i in s:
        d[i] = d.get(i,0)+1
    return 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}