字典

一.应用场景

思考:如果有三个数据,例如:‘Tom’ 男 20 如何进行储存?
答:由于数据而会发生变化,所以用简单的列表下标会发生变化,

思考2:数据顺序发生变化,每个数据的下标会随之发生变化,如何保证数据顺序变化前后能食用同一的标准查找数据?
答:字典,字典里面的数据是以键值对的形式出现的,字典数据和数据顺序没有关系,及字典不支持下标,后期无论数据如何变化,秩序要按照对应键的名字查找数据即可

二.字典的特点

【1】符号为大括号
【2】数据为键值对的形式出现
【3】各个键值对之间用逗号隔开

三.创建字典

# 有效字典
dict1={'name':'TOM','age':20,'gender':'男'}
print(dict1)  # {'name': 'TOM', 'age': 20, 'gender': '男'}

#  空字典:两种方法。
dict2={}
dict3=dict()

四.字典常见的操作

【1】增
写法:字典序列[key]=值

注意:如果key存在则修改一个key对应的值:如果key不存在则新增此键值

dict1={'name':'TOM','age':20,'gender':'男'}
dict1['name']='lisa'
print(dict1)
# {'name': 'lisa', 'age': 20, 'gender': '男'}

dict1['id']=200
print(dict1)
#  {'name': 'lisa', 'age': 20, 'gender': '男', 'id': 200}
注意:字典是可以修改的

【2】删除
del()
1.删除字典

dict1={'name':'TOM','age':20,'gender':'男'}
del(dict1)
print(dict1)
# 报错

2.删除键值对

dict1={'name':'TOM','age':20,'gender':'男'}
del(dict1['name'])
print(dict1)
# {'age': 20, 'gender': '男'}

3.删除不存在的键值对
报错
clear():清空字典

dict1={'name':'TOM','age':20,'gender':'男'}
dict1.clear()
print(dict1)
# {}

【3】修改数据
写法:字典序列[key]=数据

dict1={'name':'TOM','age':20,'gender':'男'}

dict1['id']=200
print(dict1)
#  {'name': 'lisa', 'age': 20, 'gender': '男', 'id': 200}

注意:key是原本不存在的,则新增,如果存在,则修改

【4】查找


dict1={'name':'TOM','age':20,'gender':'男'}
print(dict1['name'])
# TOM
print(dict1['idname'])
# 报错

[1] get():
语法:

字典序列.get(key,默认值)

注意:如果当前key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None

dict1={'name':'TOM','age':20,'gender':'男'}
print(dict1.get('name'))  # TOM
print(dict1.get('idname',110))  #  110
print(dict1.get('idname'))  #None

**[2] keys()😗*查找字典中所有key,返回可迭代的对象

dict1={'name':'TOM','age':20,'gender':'男'}
print(dict1.keys())  # dict_keys(['name', 'age', 'gender'])

这里体现了这是一个可以用for循环控制遍历的对象

哈哈哈哈哈这咋回事出了个表情包\笑哭

[3] valus():查找字典中所有的value,返回可迭代的对象

dict1={'name':'TOM','age':20,'gender':'男'}
print(dict1.values())  # dict_values(['TOM', 20, '男'])

[4] items():找找字典中所有键值对,返回所有可迭代对象,里面的数据全是元组,元组数据1是字典的key,元组数据2是字典key对应的值

dict1={'name':'TOM','age':20,'gender':'男'}
print(dict1.items())  
# dict_items([('name', 'TOM'), ('age', 20), ('gender', '男')])

四.字典的循环遍历

【1】遍历字典的key

dict1={'name':'TOM','age':20,'gender':'男'}
for key in dict1:
    print(key,end=' ')   #name age gender

【2】遍历values


dict1={'name':'TOM','age':20,'gender':'男'}
for key in dict1:
    print(dict1[key],end=' ')   
# TOM 20 男

dict1={'name':'TOM','age':20,'gender':'男'}
for value in dict1.values():
    print(value,end=' ')   # TOM 20 男

【3】遍历元素:

dict1={'name':'TOM','age':20,'gender':'男'}
for item in dict1.items():
    print(item,end=' ')   
# ('name', 'TOM') ('age', 20) ('gender', '男')

五.遍历字典的键值对(拆包)

字典序列.items():返回可迭代对象,内部是元组,元组是两个数据
数据1是key,数据2是value

dict1={'name':'TOM','age':20,'gender':'男'}
for key,value in dict1.items():
    print(f'{key}={value}',end=' ')
# name=TOM age=20 gender=男