## 什么是字典
一提到字典是不是就想到了新华字典?新华字典是一种字典,但是字典有更广阔的含义。
我们每个班级都有一个**花名册**,班主任想找某位同学的信息资料时,只需要从这个花名册里根据同学的**名字**就可以取到这位同学的**个人信息**。在这里,*花名册*就是我们的**字典(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*,这点要注意区别。
## 总结
这节课我们学习了什么是字典、字典的作用、我们对字典能做哪些操作。下节课,我们用字典来做一个项目实例,让大家有个感性的认识。
- 课程介绍
- 搭建环境
- 什么是计算机
- 程序是怎么运行的
- 安装python
- 项目实例-安装IDE
- 变量和简单数据类型
- 数据&变量
- 数字
- 字符串
- 布尔类型
- 项目实例
- 容器-列表
- 容器
- 列表
- 项目实例
- 容器-字典
- 定义字典
- 项目实例
- 数据类型总结
- 条件语句
- python条件语句
- 项目实例
- 循环语句
- for循环
- while循环
- 项目实例
- 函数
- 5.0函数定义
- 5.2函数实战
- 6.文件系统
- 6.1 文件系统介绍&python查找文件
- 6.2 用python读写文件
- 7. python操作时间
- 8.面向对象
- 8.1 类和对象
- 8.2 继承和重写
- 8.3 面向对象项目实战
- 9 GUI编程
- 9.1 GUI基础
- 9.2 备忘清单GUI版
- 10.网络
- 10.1 网络的发展
- 10.2 python http
- 11.web开发
- 11.1 web基础&HTML
- 11.2 CSS&JavaScript
- 11.3 网页计算器
- 11.3 网站开发实战-播客搭建
- 11.3 python-web
- 12. 项目实战-数据处理
- 13. 项目实战-AI入门
- 13.1 环境搭建
- 心得
- 13.2 Tensorflow的瓜怎么吃
- 14 pygame
- 14.1 pygame Helloworld
- 14.4 pygame 动画基础 Animation
- 从0开始学python第14.5节 pygame 加载图片和声音
- 从0开始学python第14.6节 pygame.sprite(上)
- 14.7 pygame.sprite模块(下)
- 14.8 pygame射击游戏(一)
- pygame射击游戏(二)
- 14.8 pygame射击游戏(三)
- 14.8 pygame射击游戏(四)
- 14.8 pygame射击游戏(五)