繁体   English   中英

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

[英]count number of letters that occur in a string and add the letter and number of times it occurs to a dictionary as a key value pair

我写了一个函数来计算一个字母在字符串中出现的次数,并返回这个字母和它在字符串中出现的次数作为 key: value 字典中的值对,该函数是忽略任何标点符号。

这是我所拥有的

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}

我正在尝试在不导入任何模块的情况下执行此操作,这是一种提高我对词典知识的学习练习。

它抛出一个keyerror,因为那个键还不存在。 使用 try-except 代替:

lower = letter.lower()  # Only need to do this once
try:
    result[lower] += 1
except KeyError:
    result[lower] = 1

还有 FWIW,这样做的规范方法是使用collections.Counter ,例如:

collections.Counter(c.lower() for c in text if c.isalpha())

尝试一下:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM