在 Python 3.10 中,如何创建一个接受参数和 returns 字符计数字典的函数?

How do you create a function that takes an argument and returns a dictionary of character counts in Python 3.10?

我想创建一个接受参数并创建字典的函数,其中:

I) 键是参数的单个字符,并且

ii) 这些值表示该特定字符在参数中出现的次数。

有人向我展示了下面的示例,尽管它有效 - 第 4 行和第 5 行对我来说似乎不是本能的。

可能是因为我是编码新手。为什么代码需要检查空字典?有没有更直观的方法?

def count_letters(text):
  result = {}
  for letter in text:
    if letter not in result:
      result[letter] = 0
    result[letter] += 1
  return result

print(count_letters("Python"))

如果您不先检查 letter 是否在 result 中,那么

result[letter] += 1

会增加一个 KeyError,因为还没有要增加的值。


这是 defaultdict 类型捕获的一种常见模式(如果它不存在则添加一个键,然后用它的值做一些事情)。

from collections import defaultdict

def count_letters(text):
    result = defaultdict(int)
    for letter in text:
        # If letter isn't in result yet, implicitly execute
        # result[letter] = int() first.
        # int() returns 0.
        result[letter] += 1
    return result

计算可迭代值中的项目也是一种常见模式,因此也有一种类型可能不足为奇。

from collections import Counter

def count_letters(text):
    # Counter is a subclass of dict,
    # so you can do with it anything you
    # would do with the dict.
    return Counter(text)