Python中collections.Counter()的具体使用

1. 简介

Python中的内置模块collections中提供了一个Counter类,用于计算可迭代对象中元素的个数,并返回一个字典,其中键为元素,值为元素的计数。Counter是一个非常有用的工具,可用于快速计算频率分布。本文将介绍collections.Counter() 的具体使用方法。

2. Counter()函数的基本用法

下面是Counter()函数的基本用法:

from collections import Counter

# 对列表中的元素进行计数

lst = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']

count = Counter(lst)

print(count)

# Counter({'apple': 3, 'banana': 2, 'orange': 1})

# 对字符串中字符进行计数

string = 'abcbdbdbbrqqaali'

count = Counter(string)

print(count)

# Counter({'b': 4, 'a': 3, 'd': 3, 'r': 2, 'q': 1, 'c': 1, 'l': 1, 'i': 1})

从上面的例子中可以看出,collections.Counter()可以接受任何可迭代对象。

3. Counter的常用方法

3.1 elements()

elements()方法返回一个迭代器,其中元素重复出现的次数与它在Counter的内部表示中出现的次数相同。 如果元素的计数少于等于零,则此方法不返回该元素。返回的元素顺序是无序的。

# 对字符串中字符进行计数

string = 'abcbdbdbbrqqaali'

count = Counter(string)

# 获取迭代器

element_iter = count.elements()

# 输出元素

print(list(element_iter))

输出结果:

['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'd', 'd', 'd', 'i', 'l', 'q', 'r', 'r']

3.2 most_common()

most_common()方法返回一个列表,其中包含n个最常见的元素和它们的计数,按常见顺序排序。 如果n省略或为None,则返回计数器中的所有元素。 如果计数相等,则元素以与原始输入相同的顺序返回。返回的列表具有以下属性:

列表中的元素是一个元组,第一个元素为元素,第二个元素为元素的计数。

列表的长度不大于n。如果计数相等,则元素以与原始输入相同的顺序返回。

# 对字符串中字符进行计数

string = 'abcbdbdbbrqqaali'

count = Counter(string)

# 获取n个最常见元素及它们的计数

top_three = count.most_common(3)

# 打印结果

print(top_three)

# [('b', 4), ('a', 3), ('d', 3)]

3.3 update()

update()方法用于更新地一个计数器(或多个计数器),其元素是相同类型的可迭代对象。 如果任何元素的计数小于等于零,则从计数器中删除该元素。

# 计数器 1

count1 = Counter("hello")

# 计数器 2

count2 = Counter("world")

# 更新计数器 count1

count1.update(count2)

print(count1)

# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})

可以看出,在更新之后,count1 改变了。

3.4 subtract()

subtract()方法从正在调用的计数器(或多个计数器)中将元素的计数减去。 从计数器中删除任何元素的计数少于或等于零。 通常可以在其他计数器中保存元素并以负数添加它们以进行减法。

# 计数器 1

count1 = Counter("hello")

# 计数器 2

count2 = Counter("world")

# 从计数器count1减去计数器count2

count1.subtract(count2)

print(count1)

# Counter({'l': 2, 'h': 1, 'e': 1, 'd': -1, 'r': -1, 'o': -1, 'w': -1})

可以看出,从计数器count1中减去计数器count2之后,许多元素的计数变成了负数。

4. 结语

这篇文章介绍了Python中collections.Counter()的具体用法,并且讲解了该函数的常用方法,如elements()、most_common()、update()、subtract()等。这些方法的灵活性使得Counter成为快速计算频率分布非常有用的工具。

后端开发标签