📜  Python|列出元素的频率(1)

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

Python | 列出元素的频率

在Python中,我们经常需要从列表、元组、集合、字典等数据结构中获取元素的频率。这种需求可以通过Python的内置模块collections来实现。

collections模块

collections模块提供了一些有用的数据类型,如Counter、defaultdict等,可以有效地进行元素频率的统计和记录。

1. Counter

Counter是collections模块中的一个类,用于对元素出现的频率进行统计。我们可以将列表、字符串、元组等数据结构传入Counter类中,它将返回一个字典,其中包含每个元素以及它出现的次数。

from collections import Counter

lst = ['a', 'b', 'a', 'c', 'd', 'b', 'e', 'a']
count = Counter(lst)

print(count)

输出结果为:

Counter({'a': 3, 'b': 2, 'c': 1, 'd': 1, 'e': 1})
2. defaultdict

defaultdict是collections模块中的另一个类,它的功能类似于普通的字典,但是它可以在访问一个不存在的键时,返回一个默认值。这个默认值可以是任意类型,比如int、list、set等。我们可以将int作为默认值,用于统计元素出现的频率。

from collections import defaultdict

lst = ['a', 'b', 'a', 'c', 'd', 'b', 'e', 'a']
count = defaultdict(int)

for elem in lst:
    count[elem] += 1

print(count)

输出结果为:

defaultdict(<class 'int'>, {'a': 3, 'b': 2, 'c': 1, 'd': 1, 'e': 1})
3. sorted

对于统计出的元素频率,我们可以使用sorted函数对它们进行排序。默认情况下,sort函数按照字典序进行排序,我们可以设置key参数,用于指定按照元素出现的频率进行排序。

from collections import Counter

lst = ['a', 'b', 'a', 'c', 'd', 'b', 'e', 'a']
count = Counter(lst)

for elem, freq in sorted(count.items(), key=lambda x: x[1], reverse=True):
    print(elem, freq)

输出结果为:

a 3
b 2
c 1
d 1
e 1
总结

使用collections模块可以方便地统计元素的频率。Counter可以直接对元素进行计数,而defaultdict可以给不存在的键设置一个默认值,用于计数。使用sorted函数可以对统计出的频率进行排序,方便我们进行数据分析和可视化。