📜  Python – 键频率,值最多为 K(1)

📅  最后修改于: 2023-12-03 14:46:11.635000             🧑  作者: Mango

Python – 键频率,值最多为 K

在Python中,有时候需要统计不同元素的频率,并且仅仅返回出现频率最高的K个元素,这时候可以使用collections包下的Counter类。

Counter类简介

Python的Counter是一个简单的计数器对象,用于给可哈希的对象计数。它本质上是一个字典,其中将元素映射到它们出现的次数。

下面是一个简单的例子:统计列表中各元素出现的次数,并返回前K个出现频率最高的元素。

from collections import Counter

my_list = ['apple', 'banana', 'apple', 'banana', 'apple', 'cake']

# 计算出现次数
count = Counter(my_list)

# 返回前2个出现频率最高的元素
top_k = count.most_common(2)

print(top_k)
# 输出:[('apple', 3), ('banana', 2)]
计数器的高级用法
更新计数器

Counter的update()方法可以接收各种可迭代对象,并统计出现的次数。这意味着可以将新的元素添加到现有Counter对象中。

from collections import Counter

my_list = ['apple', 'banana', 'apple', 'banana', 'apple', 'cake']
my_list_2 = ['orange', 'orange', 'apple']

count = Counter(my_list)

# 更新Counter对象
count.update(my_list_2)

top_k = count.most_common(2)

print(top_k)
# 输出:[('apple', 4), ('banana', 2)]
获取常见元素

Counter的most_common()方法返回Counter对象里出现次数最多的元素,可以指定返回的元素个数。

from collections import Counter

my_list = ['apple', 'banana', 'apple', 'banana', 'apple', 'cake']

count = Counter(my_list)

# 获取出现频率前2的元素
top_k = count.most_common(2)

print(top_k)
# 输出:[('apple', 3), ('banana', 2)]
获取不常见元素

Counter的elements()方法返回Counter对象中的元素,这个方法返回一个迭代器,每个元素出现的次数都已经被解除了(只保留了每个元素的出现次数),因此可以将其转换为列表或其他可迭代对象,以获取元素出现的详细信息。

from collections import Counter

my_list = ['apple', 'banana', 'apple', 'banana', 'apple', 'cake']

count = Counter(my_list)

# 获取所有元素
elements = list(count.elements())

print(elements)
# 输出:['apple', 'apple', 'apple', 'banana', 'banana', 'cake']
总结

Counter是一个简单但非常有用的类,是Python中快速计数的一种方式。它提供了一些方法来更新计数器、获取常见元素和获取不常见元素。使用Counter类,可以极大地简化Python中的复杂计时任务。