推荐答案
// www.javascriptcn.com code example
from collections import namedtuple, defaultdict, Counter
# 使用 namedtuple 创建一个简单的类
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x, p.y) # 输出: 10 20
# 使用 defaultdict 创建一个默认值为 0 的字典
dd = defaultdict(int)
dd['key1'] += 1
print(dd['key1']) # 输出: 1
print(dd['key2']) # 输出: 0
# 使用 Counter 统计列表中元素的出现次数
cnt = Counter(['a', 'b', 'a', 'c', 'b', 'a'])
print(cnt) # 输出: Counter({'a': 3, 'b': 2, 'c': 1})本题详细解读
namedtuple
namedtuple 是 collections 模块中的一个工厂函数,用于创建一个带有字段名的元组子类。它比普通元组更具可读性,因为可以通过字段名访问元素,而不是通过索引。
- 创建 namedtuple:使用
namedtuple('类名', ['字段1', '字段2', ...])创建一个新的类。 - 访问字段:可以通过字段名访问元组中的元素,如
p.x和p.y。
defaultdict
defaultdict 是 collections 模块中的一个字典子类,它允许为字典中的键设置默认值。当访问一个不存在的键时,defaultdict 会自动为该键创建一个默认值。
- 创建 defaultdict:使用
defaultdict(默认值类型)创建一个新的字典。例如,defaultdict(int)会为不存在的键自动初始化为 0。 - 自动初始化:当访问一个不存在的键时,
defaultdict会自动调用指定的默认值类型来初始化该键的值。
Counter
Counter 是 collections 模块中的一个字典子类,用于统计可哈希对象的出现次数。它可以方便地统计列表、字符串等可迭代对象中元素的频率。
- 创建 Counter:使用
Counter(可迭代对象)创建一个新的计数器。例如,Counter(['a', 'b', 'a'])会统计列表中每个元素的出现次数。 - 统计结果:
Counter对象会返回一个字典,其中键是元素,值是该元素的出现次数。