多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 什么是字典 一提到字典是不是就想到了新华字典?新华字典是一种字典,但是字典有更广阔的含义。 我们每个班级都有一个**花名册**,班主任想找某位同学的信息资料时,只需要从这个花名册里根据同学的**名字**就可以取到这位同学的**个人信息**。在这里,*花名册*就是我们的**字典(Map)**。(老师是不是可以像查字典一样查阅同学的个人信息) ![](http://5b0988e595225.cdn.sohucs.com/images/20170831/2f91e9cfd173424a918c1f008a451d64.jpeg) 再来举一个例子。我们用微信或QQ时,会打开一个**通讯录**。在这个通讯录里,我们根据好友的**昵称**就可以找到这个好友,进而可以查看好友的联系方式。*通讯录*也是一个字典。 ![](http://i1.hexunimg.cn/2011-09-21/133579152.jpg) 经过上面的例子,我们是不是对字典有个感性的认识了呢?我们可以把字典定义为:**由若干数据对元素组成的容器叫字典(Map)**。这个定义是不是和我们上节课学习的列表很像?下面我们就分析一下列表和字典的区别。 我们注意到在我们定义字典的时候用到了 **数据对**这个概念,啥是数据对呢?我们来看之前举的例子 `名字->个人信息`;`昵称->联系方式`;这两个都是数据对。在计算机里我们把它叫做 `键值对`,用`key->value`来表示。我们可以把键(key)这部分想象成**钥匙**,值(value)这部分想象成**锁**。 **字典(Map)** 是非常重要的数据结构。我们很多的数据查询、检索 都要用到字典。 ![](https://cdn.guru99.com/images/uploads/2012/12/java11.jpg) ## python里表示字典 看代码: ~~~ a = {'小明':'10岁','阿达':'12岁','Tom':'15岁'} ~~~ 我们定义了一个由`'小明':'10岁','阿达':'12岁','Tom':'15岁'` 4对元素组成的字典,并把这个字典赋值给了变量a。 字典是用`{}`包起来的,元素之间也是用`,`分隔开。注意每个数据对`key:value`的表示形式。key和value之间用`:`分隔开。接下来我们就可以用这些key检索、操作这些vlaue了。 ## 对字典能做哪些操作 我们能对字典这种数据结构做哪些操作呢?拿我们QQ或微信里的*通讯录*做例子 1. 查看有多少个好友 2. 获取某个好友的个人信息 3. 判断某个人是否在通讯录里 4. 更改某个好友的个人信息 5. 删除某个好友 我们看看用python怎么表示这些操作。 ~~~ a = {'小漠漠': '13750823822', '自由飞翔': '13528281235', 'jackson': '15027728853'} len(a) phone = a['jackson'] c = 'jackson' in a a['jackson'] = '13322331212' a.pop('jackson') print(phone, c, a) ~~~ **python对字典的操作** 1. **取长度**-查看有多少个好友 `len(a)` 中的**len**方法用于取字典长度,这点和列表(list)一样。 2. **获取元素**-获取某个好友的个人信息 `a['jackson']` 我们用`[key值]`来取字典中元素key为指定值的数据。这个和列表类似,但是列表用的是元素下标。字典用的是元素数据对里的key 3. **字典中是否包含某元素**-判断某个人是否在通讯录里 `'jackson' in a` 我们用 **... in ...** 语法来判断一个元素是否在字典中,这点和列表也是一样的 4. **更改元素的值**-更改某个好友的个人信息 `a['jackson'] = '13322331212'` 修改字典某元素的值和列表一样,我们只需要使用赋值表达式即可。 5. **删除元素**-删除某个好友 `a.pop('jackson')` 从字典里删除某个元素我们用**pop**方法,而列表用的是*remove*,这点要注意区别。 ## 总结 这节课我们学习了什么是字典、字典的作用、我们对字典能做哪些操作。下节课,我们用字典来做一个项目实例,让大家有个感性的认识。