文科生学Python系列5: 元组/字典

第三课 的主要内容是:

(今天的截图中运行工具不是用Python IDLE了,而是jupyter.)

数据结构:元组/字典

循坏:while循环/循环控制/嵌套循环

函数:如何自定义函数

案例讲解:工资计算器函数

元组:

元组()和列表[ ] 非常相似,都是由若干值组成的一个序列;

元组中存储的值可以是任何数据类型;

元组(主席台)中的任何元素都是不可变的,列表(观众席)可变;

元组的数据结构不需要改变,因而在内存使用和表现上,元组比列表更有效率;

可以把列表转换成元组;

元组类型


索引和切片等列表操作也可以使用到元组上

查找元素



元组中的元素是不可修改的,而列表是可以修改的。

看出来了吗?前面出错的6和7,其实是不熟悉语句操作造成的。

红色警报在6中出现,是因为没有引号表示元素,加上索引列表的时候,用的是中括号而不是小括号。

红色警报在7中出现,是因为括号用错了。

8是正确修改列表中的元素的示范。

9表示的是元组中的元素不可修改。错误提示是“类型错误”,告诉你在元组中的元素是不能被赋值的。


字典(dictionary)

可以看作是键(key)和值(value)之间的一系列一一对应关系

中间用:冒号来区分键和值


字典VS列表

列表由整数作为索引,字典由key作为索引

列表中的元素有顺序,按索引0,1,2。。。这么排列

字典中的元素没有固定顺序,常用字符串类型做key

列表和字典都是可变类型,可进行增删改操作

都可以通过 [ ] 获取元素

列表有序,字典中的元素是无序


在一对一的查找方面,字典比列表更方便

这是列表查找,略显冗长

下图是用字典来索引上图内容的过程,只需要一步:

字典看起来使用是更方便的

如何获取字典的 keys 和 values.下图演示过程。

那个是单个序列列出来的,要是想要同时获得键值对的话,用items 语句, 得到的每一个元素都是一个元组(因为都是用圆括号括起来的)

获取keys和values,还有键值对(16)

我想不明白的是,为什么这里16输出分键值对之间,不是用冒号连接而是用逗号呢?

通过key键来获取value值

上图中,想要输出France对应的值,除了直接检索之外,还可以用到get语句,在这个语句中得出的结果是一样的,但是注意到,用get和不用get还有有一点区别的,用get的时候,索引的那个元素是用圆括号包裹起来的,而不用get的时候,是用方括号包裹起来的。所以,我肯定会手贱一下,看看要是没有遵循这个括号的区别,结果会是什么:

括号不对的运行结果

搜索字典中没有没有的Britain这个元素,结果是什么呢?

想要在这对数据里面问:“喂,Britain在不在里面啊?” 可以用in语句来查找

答案是False,也就是里面并没有Britain兄弟啊!

或者用另外一种方式来查找,直接用20那条语句的结果是出错,所以可以用回get语句,要是没有的话,直接是没有输出。

但是有人觉得这程序太没礼貌了吧!问你一句你一点反应都没有?!所以就有了22语句,意思就是,要是里面有Britain兄弟的话,你就跟我说一声Unknown吧,至少有回应啊!

请注意,这里包裹起来的语句之间,用的是逗号。

字典的增删改:

增加元素

增加字典内容

我在这对数据里面找不到Britain兄弟怎么办?那我把它加进去呗!用索引形式的方括号包裹Britain兄弟,后面赋值 London,然后我们重新输出Europe,里面就有刚加进去的Britain了!

而在这个过程之中,可以看到输出的结果并没有按照之前的顺序来排列,所以也可以看出:字典中的元素是没有顺序的。

修改元素

修改字典元素

需要修改元素,把小写变成大写,重新赋值,就可以了。

删除元素

删除字典元素

还是一样的套路,用del 语句。

拿回我们上节课的案例,还记得我们上节课还不会字典这个东西,只会序列的时候,是用了多少步才走到最后吗?今天学了一样新技能,简化了多少!

案例

过程中把获取单词列表的split语句打错了,结果有是红色警报,就是说找不到那个错误的命令是什么,所以我开始理解“脚本”的意思其实是在基础链上定义很多个含义,然后后面运行时直接打那个码,就能在当初设定的范围里面运行出那个值。

这个案例挺多新的知识点要学的:

split语句来获取单词列表,也就是可以把重复的单词重新列出来,每个数量只有1;

用dict语句来初始化一个空的字典;

用word来赋值一个初始为0的字典,在words中查找,得出一个新的字典;

用循环for。。。in。。。来遍历序列里面的元素,“遍历”这个词真的是莫名高大上!

还有这篇前文提到的怎么找Britain兄弟,要是不在的话程序也得喊一声这个功能,这里是用 counts[word] = counts.get (word,0) +1 来实现的。也就是要是在遍历words这个字典中的元素中找到一个相同的值,那就在这个值上面+1,要是找不到这个值,那就输出为0.

所以最后的结果就是这样啦!和上节课的结果是一毛一样的!

然而,我很好奇,为什么Python里面的词一定就是要那个词呢?其他词不行吗?就像上面,为什么一定要用 counts,我用 datas 取代 counts 试了试

用 datas 取代 counts


“不能赋值”,所以词还是要老实跟着打?

可是我怎么知道每个词在程序里面的含义呢????

这个案例是为了找出这句话中出现最高词频的词以及它的次数,前面是把这两个要统计的词和数梳理出来了,下面就是要在梳理的结果之后得出最高值

找出最高词频的单词

这种 a.b 的语句好像 a 都是赋值过的序列或者字典,而 b 是已经定义好的脚本。在上图是把 bigcount 和 bigword 初始化,然后用循环语句和 or 语句运行,最后找到最大值和最大值的数量。

在 “ for word,count in counts. items(): ” 中,word和 count 是一组键值对,这个键值对在counts这个键值对中找东西,就像前文在Europe中找Britain一样。

items搭配在这里,为了显示counts这个键值对更加明显?

下面的语句是逐一筛选,如果这个值C大于刚刚那个值D,那这个值C就是新的输出,取代了D。

最后得出了结果最高词频是the ,出现次数为7

最后是作业的检验:

作业3-1

然而,前面用了两千多个字和那么多图的讲解,把自己看作是一个白痴讲了一天,我理解的做法是这样的:

第一下,直接是Europe['France' :capital ],  此时想浮起微笑面对这个白痴。这个时候还是学不会字符上加引号!都第三节课了!!!

然而加了引号的33号运行,还是错误的,那我加一个方括号啊!还是错误。。。

然后我去作业区,偷看同学们的作业是怎么做的,自己运行一遍:

加入一个键值对,好像比找巴黎要容易一点,毕竟也是对着打了4遍了。

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

推荐阅读更多精彩内容