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

作者: Lochaiching | 来源:发表于2017-08-15 15:20 被阅读294次

第三课 的主要内容是:

(今天的截图中运行工具不是用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遍了。

相关文章

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

    第三课 的主要内容是: (今天的截图中运行工具不是用Python IDLE了,而是jupyter.) 数据结构:元...

  • Python-07-16

    菜鸟学Python,Python的组合数据类型:列表——案例元组——拓展[dir/help]集合字典列表:...

  • Python基础之元组、字典,集合详解

    之前总结了Python列表,这篇总结Python的元组,字典和集合。 一 元组 tuple Python 的元组与...

  • Python基础之数据类型(一)

    Python基本数据类型 python系列文档都是基于python3 数字 字符串 列表 元组 字典 集合 一、数...

  • 5 字典

    前面介绍了列表、元组,Python中另外一类非常重要的对象是字典。 Python中,字典是一系列键-值对。每个键都...

  • Python notes(2/3)

    目录 一,python 字符串 二,Python列表(List) 三,Python 元组 四,Python字典 五...

  • 第3章:内建数据结构、函数及文件

    python的常用数据结构:元组、列表、字典和集合 元组(tuple):固定长度、不可变的python序列 列表:...

  • 2018-06-29

    python学习 学习python字符串、列表、元组、字典、日期和时间模块

  • 2018-01-31_Python_04day

    1.Python的元组和字典 1.1元组 元组:就像是一个使用括号的列表。 ===================...

  • Python-字符串/元组/列表/字典互转

    python字符串/元组/列表/字典互转 #-*-coding:utf-8-*- #1、字典 dict = {'n...

网友评论

  • 472f070afc9f:datas [word]= datas.get(word,0)+1
    作者你写错了哦:joy:
  • 7c6539b61dea:这是什么课的笔记呀,网课还是学校的课程?
    Lochaiching:@OrsonLee 不是的,是新生大学的《Python与数据分析》,教学团队是解密大数据。现在课程结束下架了,感兴趣的话,好像有个意向表格需要填。要是你需要的话,我去找找发你
    7c6539b61dea:@罗嘉多 是中国大学MOOC的课程吗 想问一下在哪里:smile:
    Lochaiching:@OrsonLee 这时线上课程的啊
  • 波罗学的草稿:精彩 教案水平了。关于最后一个问题 是可以用datas替换的 可以仔细查查哪里错了
  • 刘方恒的健脑房:这节课,照着你的文章学的,很给力,谢谢,接着写吧,我把余老师放弃了,哇哈哈
    Lochaiching:@刘方恒的健脑房 。。。余老师的冤屈呐!

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

本文链接:https://www.haomeiwen.com/subject/jiyurxtx.html