python【3】-统计序列中元素出现的次数(频度)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27089287/article/details/79035707

案例 

1. 统计列表中[1,1,2,22,3,3,-2,3,-34]出现次数最高的元素,并统计出现的次数

2 统计英文文章中单词的频度。

对于问题1 :

首先生成随机列表

from random import randint
l1=[randint(-10,10) for x in range(30)]
print(l1)


统计列表中元素出现的次数  比如 数字1 出现3次 就记录为1:3  很自然的想到使用字典来存储。即:

方法1:

把列表 l1 作为键,把出现的次数作为值  ,传入字典  。 使用字典的fromkeys方法 。这是fromkeys的菜鸟教程链接

http://www.runoob.com/python/att-dictionary-fromkeys.html

 dict.fromkeys(l1,0) 。把需要统计的序列(l1)作为第一个参数传入fromkeys,0 作为初始值,

使用循环遍历,每找个一个元素,就在这个元素的值后面加1 即:

from random import randint
l1=[randint(-10,10) for x in range(30)]
print(l1)
c=dict.fromkeys(l1,0)
for one in l1:
    c[one]+=1
print(c)

输出结果为 :


而在方法1中,只是得到了每一个元素出现的次数,并没有得到初选次数最多的3个元素,那么该如何做呢?

  一 。根据字典中的值对字典的键进行排序,请看这篇笔记  :按照字典的值对字典进行排序



方法2:专门处理计数问题的方法  。使用collections.Counter方法。首先导入collections类  

    使用Counter的most_common()方法。

导入Counter,将生产的随机列表作为参数传入到Counter构造器中,会得到一个这样的结果,对结果使用most_common()得到出现次数前几的元素 

Counter({-8: 4, -2: 4, -1: 3, -4: 3, 2: 2, 4: 2, 7: 2, -9: 2, 0: 1, 3: 1, 5: 1, 6: 1, 9: 1, 10: 1, -10: 1, -7: 1})

from collections import Counter
l2=Counter(l1)
print(l2.most_common(3))

代码输出:




对于问题2  统计英文单词的词频

需要使用re模块 里面的正则表达式 impor re

import re
with open(r'D:\software\Notepad++\readme.txt','r') as file:  #打开文件 统计readme.txt中的单词词频
    txt=file.read()   #把文件读取的内容变成字符串 ,因为re,split 方法的参数接受的是字符串 而不是列表
 l3=re.split('\W+',txt)     #  \W+是把字符串按照非字母的来分隔 
 l4=Counter(l3)  
 print(l4.most_common(10)) 

结果如下:




猜你喜欢

转载自blog.csdn.net/qq_27089287/article/details/79035707