张芷铭的个人博客

collections

collections.Counter 是 Python 标准库 collections 中的一个类,用于计数可哈希对象。它是一个非常方便的数据结构,可以用来轻松统计元素的频率。

以下是 Counter 类的一些常见用法和方法:

1. 创建 Counter 对象

你可以传入一个可迭代对象(如列表、字符串等)来创建一个 Counter 对象。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from collections import Counter

# 从列表创建 Counter
letters = ["a", "b", "c", "a", "b", "a"]
counter = Counter(letters)
print(counter)  # 输出: Counter({'a': 3, 'b': 2, 'c': 1})

# 从字符串创建 Counter
s = "abracadabra"
counter = Counter(s)
print(counter)  # 输出: Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

2. 访问计数

你可以像访问字典一样访问 Counter 对象中的计数。

1
2
3
print(counter['a'])  # 输出: 5
print(counter['b'])  # 输出: 2
print(counter['z'])  # 输出: 0 (不存在的键会返回0)

3. 更新计数

你可以使用 update 方法来更新计数器。update 方法可以接受一个可迭代对象或者另一个 Counter 对象。

1
2
3
4
5
6
counter.update("aaa")
print(counter)  # 输出: Counter({'a': 8, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

other_counter = Counter("xyz")
counter.update(other_counter)
print(counter)  # 输出: Counter({'a': 8, 'b': 2, 'r': 2, 'x': 1, 'y': 1, 'z': 1, 'c': 1, 'd': 1})

4. 减少计数

你可以使用 subtract 方法来减少计数器的值。

1
2
counter.subtract('aaa')
print(counter)  # 输出: Counter({'a': 5, 'b': 2, 'r': 2, 'x': 1, 'y': 1, 'z': 1, 'c': 1, 'd': 1})

5. 最常见元素

你可以使用 most_common 方法来获取频率最高的元素。

1
print(counter.most_common(2))  # 输出: [('a', 5), ('b', 2)]

6. 结合运算

Counter 对象支持一些常见的数学运算,如加法、减法、交集和并集。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
counter1 = Counter("abcd")
counter2 = Counter("dcbaabcd")

# 相加
print(counter1 + counter2)  # 输出: Counter({'a': 3, 'b': 3, 'c': 3, 'd': 3})

# 相减
print(counter2 - counter1)  # 输出: Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1})

# 交集
print(counter1 & counter2)  # 输出: Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1})

# 并集
print(counter1 | counter2)  # 输出: Counter({'a': 2, 'b': 2, 'c': 2, 'd': 2})

7. 清除计数器

你可以使用 clear 方法清空一个 Counter 对象。

1
2
counter.clear()
print(counter)  # 输出: Counter()

总结

collections.Counter 是一个功能强大且易于使用的数据结构,适合用于各种需要计数的场景。上面介绍的这些方法和操作涵盖了 Counter 类的主要功能,熟悉它们可以大大简化你在处理数据计数任务时的工作。

💬 评论