Python学习笔记3---字典在统计元素出现次数中的简单应用

如果需要统计一段文本中每个词语出现次数,需要怎么做呢?

这里就要用到字典类型了,在字典中构成“元素:出现次数”的健值对,非常适合“统计元素次数”这样的问题。

下面就用一道例题,简单学习一下:

列表 ls 中存储了我国 39 所 985 高校所对应的学校类型,请以这个列表为数据变量,完善 Python 代码,统计输出各类型的数量。

ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合", "综合", "综合",\

      "师范", "理工", "综合", "理工", "综合", "综合", "综合", "综合", "综合","理工",\

      "理工", "理工", "理工", "师范", "综合", "农林", "理工", "综合", "理工", "理工", \

      "理工", "综合", "理工", "综合", "综合", "理工", "农林", "民族", "军事"]

接下来详细说一下思考的步骤:

1、构建一个空字典

想要构成“元素:出现次数”的健值对,那首先肯定就是要先生成一个空字典。

d = { }

2、生成好空字典后,就要往里面“装”东西了。

如果要给上面那个空字典装东西,直接用索引和赋值配合增加元素:

例子:

>>> t["一周有几天"] = "7"

>>>print(t)

{‘一周有几天’:’7’}

同样方法,往d = { }添加元素,用word代表字典里的“健”,就是那些Is里的那些词:

d[word] = (心里活动:等。。于。。等于啥呢?)

这里要用到字典的一个操作方法:

d.get(key, default)      # 如果健存在,返回的值就是这个健,如果不存在,那就返回default。

那就写出这个东西了:

d[word] = d.get(word, 0)     

# 给字典d里添加元素,“健”是word,值是d.get(word, 0) 。

# d.get(word, 0) 的意思为:从字典d里找这个word,如果word存在,那就添加一个“word :word”健值对,如果不存在,那就增加了一个“word:0”健值对。

有点绕,慢慢理解下。

因为字典d是空的呀,那里面啥也没有,d.get(word, 0) 返回的肯定是 0 。

哎,哎,出现数字了啊,注意,虽然是个“0”。

另外一方面,给字典添加元素,也不能手动来吧,不现实。。

这个时候,当然就得让 for 循环出场了。

3、添加一个循环。

for word in ls:

      d[word] = d.get(word, 0) + 1

让‘word’在Is里循环取值,比如第一次 word 从 Is 取到一个词, “综合”,

那d[word] = d.get(word, 0)  的结果,就是d[综合] = 0。d一开始是空的,现在有了健值对,变成了{'综合':'0'}

在给d.get(word, 0) 加个 1,就成了{'综合':'1'}。

好啦,现在我们知道了,“综合”这个词出现了 1 次。

喜大普奔~~~~~

如果word在Is里接下来取到的词不是“综合”,那就是重复以上步骤;

如果取到的词还是“综合”,因为健值对'综合':'1'已经在字典里了,所以d.get(word, 0) 的结果,就不是0啦,而是

d[综合] = 1

再加个1,那就是d[综合] = 2,因为字典的健不允许重复,值是可以重复的,所以这一步操作相当于对'综合':'1'进行了就修改,变成了

‘综合‘:’2‘ 

这回明白了吧,通过循环操作,两行代码就生成了一个字典,里面的健值对,就是词语及其出现的次数。

到了这一步,其实工作已经差不多了,以上全部代码为:

d = {}

for word in ls: 

     d[word] = d.get(word, 0) + 1

用print(d) 来输出结果:

{'综合': 20, '理工': 13, '师范': 2, '农林': 2, '民族': 1, '军事': 1}

4、换种输出形式

刚才显示的还是不太一目了然,如果出现的结果是以列的形式,那会直观一些。

怎么做?

还是用循环吧。

for k in d: 

      print("{}:{}".format(k, d[k]))

用 k 代表 字典里的 “健”,循环多次得到结果:

综合:20

理工:13

师范:2

农林:2

民族:1

军事:1

format()的使用这里就不说了,说简单也简单,说复杂也有点复杂,format的格式控制那些玩意儿不好整。

好啦,今天就记这么多吧,这道例题的全部代码如下:

d = {}

for word in ls: 

     d[word] = d.get(word, 0) + 1

for k in d: 

      print("{}:{}".format(k, d[k]))

你可能感兴趣的:(Python学习笔记3---字典在统计元素出现次数中的简单应用)