网络知识 娱乐 python Counter() 函数

python Counter() 函数

 目录

1、以统计列表中的词频为例

2、寻找出现次数最多的 k 个数


刷 leetcode 时发现了可以很方便地统计词频的 Counter() 函数,有了这个函数就不用手动的使用 for 循环来手动统计词频啦!

Counter()collections 库中的一个函数,可以用来统计一个 python 列表、字符串、元组等可迭代对象中每个元素出现的次数,并返回一个字典。可以看下常用的 Counter() 例子:

1、以统计列表中的词频为例

列表中含有一串整数,要统计每个数出现的次数,可以像下面这样:

from collections import Counter

nums = [1, 1, 1, 6, 6, 6, 7, 8]
count = Counter(nums)  # 统计词频
for k, v in count.items():
    print(k, v)
print(count)
"""
输出:
1 3
6 3
7 1
8 1
Counter({1: 3, 6: 3, 7: 1, 8: 1})
"""

2、寻找出现次数最多的 k 个数

《剑指offer 专项突破版》 第60题:出现频率最高的 k 个数字 就可以使用这种方式来解~ 

使用 Counter 统计完词频后可以使用 most_common 方法来查找出现频率最高的 k 个数字及其出现次数。

from collections import Counter

nums = [1, 1, 1, 6, 6, 6, 7, 8]

count = Counter(nums)

ansdict = count.most_common(2)  # 返回出现次数最多的两个数及其出现的次数
print(ansdict) # 注意输出格式
ans = []
for i in range(len(ansdict)):
    ans.append(ansdict[i][0])  # 提取出出现次数最多的两个数
print(ans)

"""
输出:
[(1, 3), (6, 3)]
[1, 6]
"""