来源:AI入门学习 作者:小伍哥 在很多计算任务中,需要统计不同信息出现的次数,最常见的就是统计某段文字中每个词或者每个字出现的次数,也就是常见的词频统计,这个时候,字典就派上了很大的用场,我们看看通过字典怎么进行统计。 我们用鲁迅先生的经典语录作为例子(略有改动),为了简化,就不分词了,自己分字,统计字数即可。分词后形成了一个列表textlist(床上有两个枕头,一个是我的,另一个也是我的)print(text)〔床,上,有,两,个,枕,头,,,一,个,是,我,的,,,另,一,个,也,是,我,的〕方法一: 通过字典,直接进行统计worddic{}forwordintext:ifwordinworddic:worddic〔word〕1else:worddic〔word〕1print(worddic){床:1,上:1,有:1,两:1,个:3,枕:1,头:1,,:2,一:2,是:2,我:2,的:2,另:1,也:1}方法二: 上面的语句加了条件判断,显得稍微有点复杂,我们可以简化如下worddic{}forwordintext:worddic〔word〕worddic。get(word,0)1print(worddic){床:1,上:1,有:1,两:1,个:3,枕:1,头:1,,:2,一:2,是:2,我:2,的:2,另:1,也:1}方法三: 还可以用collections模块的defaultdict进行统计,显得更加简洁,更加专业。fromcollectionsimportdefaultdictworddicdefaultdict(int)forwordintext:worddic〔word〕1print(worddic)defaultdict(classint,{床: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,都不用设置,显得更加简洁,大家细细品味。