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]))

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,726评论 0 10
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,374评论 0 5
  • 一、集合   在 Python 中,集合由内置的 set 类型定义。  集合的特性:无序,元素唯一 ,可变。属于散...
    奋斗在阿尔卑斯的皮卡丘阅读 721评论 0 0
  • 【原典77】 “功夫难处,全在格物致知上。此即诚意之事。意既诚,大段心亦自正,身亦自修。但正心修身工夫,亦各有用力...
    海上明月共阅读 738评论 0 0
  • 天一直雾蒙蒙的已经好几天了,总以为太阳马上就会冲出大雾的封锁,可是却一直都没有成功。今天天反而下起了淅淅沥沥的小雨...
    angell20043阅读 114评论 0 1