登录
首页精彩阅读Python字典的高级用法——统计计数
Python字典的高级用法——统计计数
2021-09-24
收藏

来源: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,都不用设置,显得更加简洁,大家细细品味。


数据分析咨询请扫描二维码

客服在线
立即咨询