全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析师(CDA)专版
633 0
2022-05-11

来源:AI入门学习

作者:小伍哥

在很多计算任务中,需要统计不同信息出现的次数,最常见的就是统计某段文字中每个词或者每个字出现的次数,也就是常见的词频统计,这个时候,字典就派上了很大的用场,我们看看通过字典怎么进行统计。

我们用鲁迅先生的经典语录作为例子(略有改动),为了简化,就不分词了,自己分字,统计字数即可。分词后形成了一个列表

text = list(‘床上有两个枕头,一个是我的,另一个也是我的’) print(text)
[‘床’, ‘上’, ‘有’, ‘两’, ‘个’, ‘枕’, ‘头’, ‘,’, ‘一’, ‘个’, ‘是’, ‘我’, ‘的’, ‘,’, ‘另’, ‘一’, ‘个’, ‘也’, ‘是’, ‘我’, ‘的’]
方法一:
通过字典,直接进行统计

word_dic = {} 
for word in text: 
	if word in word_dic: 
		word_dic[word] += 1 
	else: 
		word_dic[word] = 1 
print(word_dic) 
{'床': 1, '上': 1, '有': 1, '两': 1, '个': 3, '枕': 1, '头': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}

方法二:
上面的语句加了条件判断,显得稍微有点复杂,我们可以简化如下

word_dic = {} for word in text:
    word_dic[word] = word_dic.get(word,0)+1 
    print(word_dic)
{'床': 1, '上': 1, '有': 1, '两': 1, '个': 3, '枕': 1, '头': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}

方法三:
还可以用collections 模块的defaultdict进行统计,显得更加简洁,更加专业。

from collections import defaultdict
word_dic = defaultdict(int) for word in text:
    word_dic[word] += 1 print(word_dic)
defaultdict('int'>, {'床': 1, '上': 1, '有': 1, '两': 1, '个': 3, '枕': 1, '头': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1})

上面三种方法,看起来简单,实际上,要理解其中的奥妙是非常困难的,特别是对于初学者,大家可以仔细琢磨。

方法一之所以要加条件判断,是因为第一次出现的字,在字典中不存在,dict[key],当key不存在时会报错。

方法二通过get(word,0)方法,获取,如果不存在,则默认加入并置为0,后面加1就恰好是统计的次数了。需要充分理解get方法。

方法三通过defaultdict(int),默认不存在时是0,都不用设置,显得更加简洁,大家细细品味。

      相关帖子DA内容精选

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群