场景一:
声明一个列表
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)运行结果:
nameagehomevalues() 方法
遍历字典的值(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 definedclear 清空整个字典元素
示例代码:
teacher_info = {'name': '绿竹', 'age': 18, 'home': '湖南省长沙市'}print(teacher_info)teacher_info.clear()print(teacher_info)运行结果:
{'name': '绿竹', 'age': 18, 'nome': '湖南省长沙市'}{}