Python 计算字符串中出现的字母数,并将字母及其出现次数作为键值对添加到字典中

Python 计算字符串中出现的字母数,并将字母及其出现次数作为键值对添加到字典中,python,dictionary,Python,Dictionary,我编写了一个函数来计算字母在字符串中出现的次数,并返回字母以及它在字符串中作为键:值对出现的次数。在字典中,该函数用于忽略任何标点符号 这是我的 def count_letters(text): result = {} for letter in text: if letter.isalpha(): if result[letter.lower()]: result[letter.lower()] += 1

我编写了一个函数来计算字母在字符串中出现的次数,并返回字母以及它在字符串中作为键:值对出现的次数。在字典中,该函数用于忽略任何标点符号

这是我的

def count_letters(text):
    result = {}
    for letter in text:
        if letter.isalpha():
            if result[letter.lower()]:
                result[letter.lower()] += 1
            result[letter.lower()] = 1
    return(result)
我认为如果关键结果[字母]不存在,它应该跳过if语句

if result[letter.lower()]:
但它却抛出了一个关键错误,我做错了什么

我期待着如果

text = "This is a sentence."
然后我的函数应该返回

{'t': 2, 'h': 1, 'i': 2, 's': 3, 'a': 1, 'e': 3, 'n': 2, 'c': 1}

我试图在不导入任何模块的情况下完成此操作,这是一个学习练习,旨在提高我对词典的知识。

它抛出了一个键错误,因为该键还不存在。请改用try,除非:

lower = letter.lower()  # Only need to do this once
try:
    result[lower] += 1
except KeyError:
    result[lower] = 1
也是FWIW,实现这一点的标准方法是,例如:

试试看:

def count_letters(text):
    result = {}
    for letter in text:
        if letter.isalpha():
            if letter.lower() in result.keys():
                result[letter.lower()] += 1
            else:
                result[letter.lower()] = 1
    return(result)

谢谢正如所料,我看到很多文章显示我可以通过使用集合得到相同的答案。感谢两个答案!除了在result.items()中使用if-letter.lower()之外,我完全尝试了这个方法:现在我知道哪里出了问题,谢谢!
def count_letters(text):
    result = {}
    for letter in text:
        if letter.isalpha():
            if letter.lower() in result.keys():
                result[letter.lower()] += 1
            else:
                result[letter.lower()] = 1
    return(result)