目录
刷 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]
"""
文章出处登录后可见!
已经登录?立即刷新