字符串 列表 元组 字典 集合-3.11字典
一、引入
场景1
如果有列表
nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi'];
如果发现"xiaoWang"
这个名字写错了,通过下标既可以修改
nameList[1] = 'xiaoxiaoWang'
但如果列表的顺序发生了变化,如下
nameList = ['xiaoWang', 'xiaoZhang', 'xiaoLi'];
此时就必须需要修改下标,才能完成名字的修改
nameList[0] = 'xiaoxiaoWang'
问:有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?
场景2
学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?
students = [[1001, "王bao强", 24], [1002, "马rong", 23], [1005, "宋x",24], ...]
假如上述列表有100个人的信息,此时会发现想要找到某个人的信息虽然我们可以数数0、1、2、。。。。但这也太麻烦了
问:有没有更方便的方式呢?
通过上面的2个场景的描述,发现虽然列表可以很轻松的实现数据的正删改查,但当多个数据时,想要快速定位到某个数据就会很不方便
基于此原因,Python发明了一种特殊的下标
,可以快速的找到想要的数据
拥有这种特殊下标的数据类型就是字典
二、基本使用
1. 定义格式
{key: value, key2: value ...}
说明:
key
可以理解为:我们自己可以定义的下标value
可以理解为:我们要存储的真正的数据- 字典只要存储一个数据,就必须用
key: value
(我们常称为键值对)组成
2. 示例
定义一个字典,存储王老师的信息
teacher_wang = {"name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top"}
如果感觉一行太长,写不开,可以用如下的方式
teacher_wang = { "name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top" }
说明:
- 字典能够存储多个数据
- 列表中找某个元素时,是根据下标进行的,字典中找某个元素时,是根据'key'(就是冒号:前面的那个值,例如上面代码中的'name'、'home'、'age')
- 字典的每个元素由2部分组成,
键:值
3. 根据key访问value
teacher_wang = { "name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top" } print(teacher_wang['name']) # 获取姓名 print(teacher_wang['age']) # 获取年龄 print(teacher_wang['home']) # 获取住址 print(teacher_wang['web_site']) # 获取网站
结果:
王老师 18 山东省青岛市 www.codetutor.top
三、遍历字典
1. keys()
遍历字典的key(键)
teacher_wang = { "name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top" } for key in teacher_wang.keys(): print(key)
运行结果
name age home web_site
2. values()
遍历字典的value(值)
teacher_wang = { "name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top" } for val in teacher_wang.values(): print(val)
运行结果
王老师 18 山东省青岛市 www.codetutor.top
3. items()
遍历字典的项(元素)
teacher_wang = { "name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top" } for temp in teacher_wang.items(): print(temp) # 此时temp是元组
运行结果
('name', '王老师') ('age', 18) ('home', '山东省青岛市') ('web_site', 'www.codetutor.top')