📜  python 计数器 - Python (1)

📅  最后修改于: 2023-12-03 15:19:11.734000             🧑  作者: Mango

Python 计数器

Python 中的计数器是一种用于计算某个元素出现次数的工具。在 Python 标准库中,提供了两个不同的计数器实现:字典和 Counter 类。

字典实现计数器

使用字典实现计数器的方法非常简单:对于每个元素,将其作为字典中的键,值为出现的次数。

lst = ['apple', 'banana', 'orange', 'apple', 'pear', 'banana', 'banana']
counter = {}

for item in lst:
    if item in counter:
        counter[item] += 1
    else:
        counter[item] = 1

print(counter) # {'apple': 2, 'banana': 3, 'orange': 1, 'pear': 1}

使用字典实现计数器的方法非常直接。但是,如果我们需要多次实现计数器,或者需要对某个计数器进行更复杂的操作,则使用 Counter 类是一个更好的选择。

使用 Counter 类实现计数器

Counter 类是 Python 标准库中 collections 模块中的一个类。该类实现了一个计数器,可以更快速便捷地进行元素的计数。

from collections import Counter

lst = ['apple', 'banana', 'orange', 'apple', 'pear', 'banana', 'banana']
counter = Counter(lst)

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

我们只需要将被计数的元素作为 Counter 类的一个参数即可创建一个计数器对象。然后,我们可以通过对象的方法获取计数器信息,例如个数最多的元素:

print(counter.most_common(1)) # [('banana', 3)]

对于一些特殊的场景,例如字符串中文本词频的统计,也可以方便地使用 Counter 类。

import re

text = 'Programming is fun!  Programming is interesting.'
words = re.findall(r'\w+', text.lower())

print(words) # ['programming', 'is', 'fun', 'programming', 'is', 'interesting']
print(Counter(words)) # Counter({'is': 2, 'programming': 2, 'fun': 1, 'interesting': 1})

通过正则表达式将文本中的所有单词提取出来,然后将它们添加到 Counter 对象中进行计数。最后,我们可以轻松地获取出现频率最高的单词:

print(Counter(words).most_common(1)) # [('programming', 2)]

总的来说,Python 中的计数器非常容易使用,并且可以用于很多不同的场景中。使用字典实现计数器时,稍微麻烦一些;而使用 Counter 类则更为方便快捷。