格式:变量 = {key1 : value1, key2: value2......}
空字典定义:
{}
dict()
字典中键不能重复,是唯一的,但是值可以重复
字典中的键要见名知意,体现字典可以见名知意的特性
# 字典:储存多个数据,以键值对形式存储,方便快速存取 # 字典的键要见名知意 # 字典定义格式: 变量 = {键1:值1, 键2:值2.....} dict1 = {'name': 'xiaoming', 'age': 18, 'gender': '女'} # 使用print打印可以显示字典中的所有数据 print(dict1) # 查看字典类型 print(type(dict1)) # <class 'dict'> # 空字典定义方法 dict2 = {} # 或者 dict3 = dict() print(dict2, dict3) print(type(dict2), type(dict3)) # 见名知意的重要性 # 需求: 使用字典保存一个人的信息 xiaoming 18 男 001 # 保存方式一: # dict4 = {'name': 'xiaoming', 'age': 18, 'gender': '男', '学号': '001'} # print(dict4) # 保存方式二: # 字典的优势是快速存取,注意命名键的时候要见名知意,并且易于记忆 # 字典占用空间远大于列表,使用字典存储数据本来就是牺牲空间确保时间,所以要尽量利用字典快速存取的特性,而不要想空间的节省 # dict5 = {'xiaoming':18, '男':'001'} # 不建议这样写 # 定义字典时 ,不能有重复的键,否则后定义的键值对会覆盖先定义的 dict6 = {'name': 'xiaoming', 'age': 18, 'name': 'rose'} # 字典中的键是惟一的,后定义的内容值会覆盖先定义的 print(dict6) # 字典中键是唯一的但是值可以随意重复 dict7 = {'name': '小明', 'age': 18, 'id': 18} print(dict7)
字典[新的key] = 值
如果key在原字典中已经存在则为修改原key对应的值
# 增 使用新的键 = 值的形式增加键值对 dict1 = {'name':'xiaoming', 'age': 18} # 使用新的键= 值 # 格式:字典变量[key] = 值 如果为新增,则key在原字典中不存在 dict1['gender'] = '男' print(dict1) # {'name': 'xiaoming', 'age': 18, 'gender': '男'} # 如果原字典中存在该key 则为修改原key所对应的值 dict1['name'] = 'xiaowang' print(dict1) # {'name': 'xiaowang', 'age': 18, 'gender': '男'} # update # 一般用于两个字典间的拼接 # 如果update中添加的键已经存在则修改原有的值 dict1.update({'id': '001', 'color': 'yellow', 'name': 'rose'}) print(dict1)
del 查找到字典的键所对应的值进行删除
clear()清空字典所在数据空间中的多有键值对
pop:删除指定键所对应的键值对,会将删除的键值对所对应的值进行返回
popitem: 删除随机一个键值对,尝试后发现总是删除最后一个,会将删除的键值对以元组的形式进行返回
# del # 使用del删除键值对,先要找到dict所对应的键,进行删除 # 注意,在字典中键值对是成对出现的,删除键值也就消失了,不能出现单独的键或者单独的值 dict1 = {'name': 'xiaoming', 'age': 18} del dict1['age'] print(dict1) # {'name': 'xiaoming'} # clear() 清空字典 # 使用clear将字典所对应的内存空间中的数据进行了清空 dict1.clear() print(dict1) # {} # 通过之前的学习经验我们猜测 pop是删除简直对用的 dict2 = {'name': 'xiaoming', 'age': 18, 'gender': '男'} # 使用pop可以根据指定的key删除键值对 # 使用pop删除键值对后会将其键对应的值进行返回 # print(dict2.pop('name')) # xiaoming # print(dict2) # {'age': 18, 'gender': '男'} # 猜测:popitem也是删除键值对使用的 # 随机删除一个键值对,一般都是删除最后一个 # 删除后会将我们所删除的键值对以元组的形式进行返回 print(dict2.popitem()) # ('gender', '男') print(dict2.popitem()) # ('age', 18) print(dict2) # {'name': 'xiaoming'} # dict 无序的 因为其不能通过索引进行键值对的获取(了解) # Python3.5以后,字典中键值对的顺序和我们插入键值对的顺序保持一致,但是该顺序没法被利用(了解)
字典[key] = 值
字典中key必须存在
update:
update(键 = 值)
update({键:值})
对应的键一定存在
# 通过索引修改字典中的键值对 dict1 = {'name':'小明', 'age':18} dict1['name'] = '小红' print(dict1) # update # 可以进行制定字段值的修改 # dict1.update(name='小绿') dict1.update({'name': '小绿'}) print(dict1)
使用键查询值:字典[key]
查询的键不存在时则报错
get:字典.get(key)
查询的键不存在时,不报错,可以默认返回None,或者手动设置返回内容
keys:获取所有的键
values:获取所有的值
items:获取所有的键值对组成的元组
# 直接使用key进行查询 dict1 = {'name': '小明', 'age': 18, 'gender': '男', 'id': '001'} # 查询学员的名称? print(dict1['name']) # get查询 # 如果我们查询的键不存在会真么样??? 报错 # KeyError: 'apple' 会出现keyerror 表示查询的键不存在 报错 # print(dict1['apple']) # 使用get进行查询,只需要在get中传入对应的键即可 # 如果使用get查询的键不存在,则不会报错,会默认返回一个None print(dict1.get('name')) # 小明 print(dict1.get('apple')) # None # 如果查询的键不存在,get可以自定义默认返回值 # 格式 字典.get(要查询的键, 查询的键不存在时返回的数据) print(dict1.get('apple', '小刚')) print(dict1.get('apple', 9)) # keys 获取当前字典中所有的键 print(dict1.keys()) # dict_keys(['name', 'age', 'gender', 'id']) # keys返回的内容不是列表,而是dict_keys,该数据类型不能直接使用索引查询数据,但是可以进行for遍历 print(type(dict1.keys())) # <class 'dict_keys'> keys_1 = dict1.keys() # 不能使用索引查询 # TypeError: 'dict_keys' object is not subscriptable # print(keys_1[1]) # 可以被迭代 for i in keys_1: print(i) # values 获取当前字典中所有的值 print(dict1.values()) # dict_values(['小明', 18, '男', '001']) # dict_values不能使用索引查询,但是可以迭代 print(type(dict1.values())) # <class 'dict_values'> # items 获取当前字典中所有的键值对,键值对以元组形式展示 print(dict1.items()) # dict_items([('name', '小明'), ('age', 18), ('gender', '男'), ('id', '001')]) # dict_items不能使用索引查询,但是可以迭代 print(type(dict1.items())) # <class 'dict_items'>
# 字典的遍历 dict1 = {'name': '小明', 'age': 18, 'gender': '男', 'id': '001'} # 使用for循环对字典进行遍历,默认获取的是字典的每一个键 for i in dict1: print(i) ''' name age gender id ''' # 获取的是字典的每一个键 for i in dict1.keys(): print(i) ''' name age gender id ''' # 获取的是字典的每一个值 for i in dict1.values(): print(i) ''' 小明 男 ''' # 获取的是字典中每一个键值对组成的元组 for i in dict1.items(): print(i) ''' ('name', '小明') ('age', 18) ('gender', '男') ('id', '001') ''' # 有没有办法可以分别拿到字典的键和值呢? for i in dict1: print(i, dict1[i]) for key, value in dict1.items(): print(key, value )