📜  python set with counts - Python (1)

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

Python Set with Counts

在Python中,对于存储不同的元素集合,我们经常会使用set。与list和tuple不同,set是不可重复的,并且没有顺序。但是,Python的集合自身并没有进行计数的功能,而我们有时需要知道某个元素在集合中出现了多少次。本文将介绍如何使用Python的第三方库实现带有计数功能的集合。

Counter

Python中的collections模块提供了Counter类,可以快速、方便地得到一个集合中每个元素的计数结果。Counter是一个字典(dictionary)的子类,它以元素作为键,计数作为值。下面是一个简单例子:

from collections import Counter

my_set = set(['apple', 'banana', 'cherry', 'banana', 'apple', 'apple'])
my_counter = Counter(my_set)

print(my_counter)

输出结果:

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

可以看到,Counter对象返回了每个元素的计数。

defaultdict

除了Counter,Python的collections模块还提供了一个叫做defaultdict的字典(dictionary)子类。defaultdict与普通的字典不同,它可以自动为缺失的键(key)设置默认值。使用defaultdict可以实现一个便捷的带有计数功能的集合。

from collections import defaultdict

my_set = set(['apple', 'banana', 'cherry', 'banana', 'apple', 'apple'])
my_dict = defaultdict(int)

for item in my_set:
    my_dict[item] += 1

print(my_dict)

输出结果:

defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'cherry': 1})

可以看到,defaultdict对象也返回了每个元素的计数,与Counter类似。

总结

在Python中使用集合时,有时我们需要知道集合中每个元素出现的次数。Python的collections模块提供了Counter和defaultdict类,可以帮助我们快速得到计数结果。Counter适用于快速统计集合中所有元素的计数,而defaultdict可以方便地自定义计数方式。