14.序列类型——字典

李光朱课程 2024-04-09 09:32:31
字典引入

场景一:

声明一个列表

nameList = ['张三', '李四', '王五']

如果发现 "李四" 这个名字写错了,通过下标修改

nameList[1] = '赵六'

但是如果列表元素的顺序发生了变化,如下列代码

nameList = ['张三', '王五', '李四']

此时就必须需要修改下标,才能完成姓名的修改

nameList[2] = '赵六'

问:有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?

场景二:

学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?

students = [[1001, "张三", 24], [1002, "李四", 23], [1005, "王五",24], ...]

假如上述列表有100个人的信息,此时会发现想要找到某个人的信息虽然我们可以数数0、1、2、。。。。但这也太麻烦了

问:有没有更方便的方式呢?

通过上面的2个场景的描述,发现虽然列表可以很轻松的实现数据的正删改查,但当多个数据时,想要快速定位到某个数据就会很不方便

基于此原因,Python发明了一种特殊的下标,可以快速的找到想要的数据

拥有这种特殊下标的数据类型就是字典

基本使用

定义格式

{key: value, key2: value ...}

说明:

key可以理解为:我们自己可以定义的下标value可以理解为:我们要存储的真正的数据字典只要存储一个数据,就必须用key: value(我们常称为键值对)组成

代码示例

定义一个字典,存储顾安老师的信息

teacher_info = {'name': '绿竹', 'age': 18, 'home': '湖南省长沙市'}

如果感觉一行太长,写不开,可以用如下的方式

teacher_info = { 'name': '绿竹', 'age': 18, 'home': '湖南省长沙市'}

说明:

字典能够存储多个数据列表中找某个元素时,是根据下标进行的,字典中找某个元素时,是根据'key'(就是冒号:前面的那个值,例如上面代码中的'name'、'home'、'age')字典的每个元素由2部分组成,键:值

根据 key 访问 value

teacher_info = { "name": "绿竹", "age": 18, "home": "湖南省长沙市"}print(teacher_info['name']) # 获取姓名print(teacher_info['age']) # 获取年龄print(teacher_info['home']) # 获取住址

运行结果:

绿竹18湖南省长沙市遍历字典(keys、values、items)

keys() 方法

遍历字典的键(key)

teacher_info = { "name": "绿竹", "age": 18, "home": "湖南省长沙市"}for key in teacher_info.keys(): print(key)

运行结果:

nameagehome

values() 方法

遍历字典的值(value)

teacher_info = { "name": "绿竹", "age": 18, "home": "湖南省长沙市"}for val in teacher_info.values(): print(key)

运行结果:

绿竹18湖南省长沙市

items() 方法

遍历字典的项(元素)

teacher_info = { "name": "绿竹", "age": 18, "home": "湖南省长沙市"}for item in teacher_info.items(): print(item)

运行结果:

('name', '绿竹')('age', 18)('home', '湖南省长沙市')字典的常见操作数据查询 - 普通方式teacher_info = { "name": "绿竹", "age": 18, "home": "湖南省长沙市"}print(teacher_info['QQ']) # 当前字典不存在QQ这个键

运行结果:

Traceback (most recent call last): File "/Users/poppies/Desktop/字典.py", line 8, in <module> print(teacher_info["QQ"])KeyError: 'QQ'数据查询 - get 方式

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

teacher_info = { "name": "绿竹", "age": 18, "home": "湖南省长沙市"}print(teacher_info.get('QQ', '当前字典不存在QQ这个key')) # 当前字典不存在QQ这个键

运行结果:找不到指定的key则使用默认值,程序不会因为key的不存在而崩溃

当前字典不存在QQ这个key数据修改

字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改

info = {'name': '班长', 'id': 100, 'sex': '男', 'address': '中国北京'}new_id = input('请输入新的学号:')info['id'] = int(new_id)print('修改之后的id为: %d' % info['id'])

运行结果:

请输入新的学号:1010修改之后的id为: 1010数据增加

新的key以及value就表示添加一个新的键值对

即:如果在使用 变量名['键'] = 数据 时,这个“键”在字典中不存在,那么就会新增这个元素。

info = {'name': '班长', 'id': 100, 'sex': '男', 'address': '中国北京'}print(info)info['web_address'] = "www.tulingxueyuan.com" # 添加一个新的键值对print(info)

执行结果:

{'name': '班长', 'id': 100, 'sex': '男', 'address': '中国北京'}{'name': '班长', 'id': 100, 'sex': '男', 'address': '中国北京', 'web_address': 'www.tulingxueyuan.com'}数据删除

对字典进行删除操作,有一下几种:

delclear()

del 删除指定的元素

示例代码:

teacher_info = {'name': '绿竹', 'age': 18, 'home': '湖南省长沙市'}print(teacher_info)del teacher_info['home']print(teacher_info)

运行结果:

{'name': '绿竹', 'age': 18, 'nome': '湖南省长沙市'}{'name': '绿竹', 'age': 18}

del 删除整个字典

示例代码:

teacher_info = {'name': '绿竹', 'age': 18, 'home': '湖南省长沙市'}print(teacher_info)del teacher_infoprint(teacher_info)

执行结果:

{'name': '绿竹', 'age': 18, 'nome': '湖南省长沙市'}Traceback (most recent call last): File "/Users/poppies/Desktop/字典常见操作.py", line 7, in <module> print(teacher_info)NameError: name 'teacher_info' is not defined

clear 清空整个字典元素

示例代码:

teacher_info = {'name': '绿竹', 'age': 18, 'home': '湖南省长沙市'}print(teacher_info)teacher_info.clear()print(teacher_info)

运行结果:

{'name': '绿竹', 'age': 18, 'nome': '湖南省长沙市'}{}

0 阅读:0

李光朱课程

简介:感谢大家的关注