如何计算文本中不包括空格和数字的字母的出现频率?

问题描述 投票:0回答:1

使用字典来计算输入字符串中字母的频率。仅应计算字母,不能计算空格,数字或标点符号。大写字母应视为与小写字母相同。例如,count_letters(“这是一个句子。”)应该返回{'t':2,'h':1,'i':2,'s':3,'a':1,'e': 3,'n':2,2,'c':1}

def count_letters(text):
      result = {}
      # Go through each letter in the text
      for letter in text:
        # Check if the letter needs to be counted or not
        if letter not in result:
          result[letter.lower()] = 1
        # Add or increment the value in the dictionary
        else:
          result[letter.lower()] += 1
      return result

    print(count_letters("AaBbCc"))
    # Should be {'a': 2, 'b': 2, 'c': 2}

    print(count_letters("Math is fun! 2+2=4"))
    # Should be {'m': 1, 'a': 1, 't': 1, 'h': 1, 'i': 1, 's': 1, 'f': 1, 'u': 1, 'n': 1}

    print(count_letters("This is a sentence."))
    # Should be {'t': 2, 'h': 1, 'i': 2, 's': 3, 'a': 1, 'e': 3, 'n': 2, 'c': 1}
python data-structures
1个回答
0
投票

这应该起作用:

>>> from collections import Counter
>>> from string import ascii_letters
>>> def count_letters(s) :
...     filtered = [c for c in s.lower() if c in ascii_letters]
...     return Counter(filtered)
... 
>>> count_letters('Math is fun! 2+2=4')
Counter({'a': 1, 'f': 1, 'i': 1, 'h': 1, 'm': 1, 'n': 1, 's': 1, 'u': 1, 't': 1})
>>> 
© www.soinside.com 2019 - 2024. All rights reserved.