使用函数计算字符串的字符

编写一个名为count_letters的函数,该函数将字符串作为参数并返回一个字典,该字典列出该字符串中每个字母的数量。该字符串可以包含字母以外的其他字符,但仅应计算字母。该字符串甚至可以是空字符串。字母的小写和大写版本应属于同一计数。字典的键应为大写字母。如果字母未出现在字符串中,则不会将其添加到字典中。例如,如果字符串为

"AaBb"

然后返回的字典应包含以下键值对:

{'A': 2,'B': 2}
def count_letters(string):
    """counts all the letters in a given string"""
    your_dict = dict()
    for x in string:
        x = x.upper()  # makes lowercase upper
        if x not in your_dict:
            your_dict[x]= 1
        else:
            your_dict[x] += 1
    return your_dict

我上载时出现以下错误:

Test Failed: {'Q': 1,'U': 3,'I': 3,'S': 6,' ': 3,'C[48 chars]': 1} != {'S': 6,'T': 3,'O': 3,'C[32 chars]': 1}
+ {'C': 2,'D': 2,'E': 2,'P': 1,'Q': 1,'U': 3}
- {' ': 3,-  '?': 1,-  'C': 2,-  'D': 2,-  'E': 2,-  'I': 3,-  'O': 3,-  'P': 1,-  'Q': 1,-  'S': 6,-  'T': 3,-  'U': 3}
xiaoweiba2000 回答:使用函数计算字符串的字符

尝试类似这样的方法。随时根据您的要求进行调整:

import collections
def count_letters(string):
    return collections.Counter(string.upper())

print(count_letters('Google'))

Output:  Counter({'G': 2,'O': 2,'L': 1,'E': 1})

有关集合模块中Counter dict子类的文档,check this

不使用collections模块进行更新:

def count_letters(string):
    your_dict={}
    for i in string.upper(): 
        if i in your_dict: 
            your_dict[i] += 1
        else: 
            your_dict[i] = 1
    return your_dict  

Output: {'G': 2,'E': 1}  
,

此解决方案确实使用collections,但与Counter不同,我们不是从单个库函数中获得整个解决方案。我希望它是允许的,如果不允许,则它至少会以某种方式提供信息。

import collections as colls

def count_letters(str_in):
    str_folded = str_in.casefold()
    counts = colls.defaultdict(int)
    for curr_char in str_folded:
        counts[curr_char] += 1
    return counts

defaultdict非常实用。顾名思义,当我们尝试使用不存在的键索引字典时,它会为该键创建一个默认值并执行我们的原始操作。在这种情况下,由于我们声明defaultdict的键将使用整数,因此默认值为0。

str.casefold()是专门为不区分大小写的比较复杂的问题设计的方法。虽然在这里不太可能有所作为,但要知道它是一个很好的功能。

让我知道您是否有任何问题:)

,

不使用collections,这是一种解决方案:

def count_letters(string):
    string = string.upper()
    counts = {}
    for a in set(string):
        counts[a] = string.count(a)
    return counts

此函数遍历set(string),它等于您单词中使用的所有字母,没有重复且大写。然后,它计算每个字母在您的字符串中出现的次数,并将其添加到您的counts词典中。

我希望这能回答您的问题。 :)

本文链接:https://www.f2er.com/3061204.html

大家都在问