python进阶,在第一期的基础上做了极大的优化,整体更加美观易懂
十、字典
字典的作用:可以在不支持下标操作的情况下,数据顺序发生变化之后依然可以查找到数据。、
字典内为键值对,寻找数据时候,即通过key拿到key对应的值,key为键,值为vaiue
# 字典的格式:
{"name":"lilei","age":20,"gender":"男"} # 都是以键值对的形式存在,一 一对应
字典的特点:
1、符号为大括号
2、数据为键值对形式出现
3、各个键值对之间用逗号隔开
10.1、创建
创建空字典:{}或dict()
dict1 = {}
dict2 = dict()
print(type(dict1))
print(type(dict2))
# 结果:
>>> <class 'dict'>
>>> <class 'dict'>
创建非空字典
dict3 = {"yb": "xuh", "eb": "pz", "xz": "xxx"}
print(dict3)
# 结果
>>> {'yb': 'xuh', 'eb': 'pz', 'xz': 'xxx'}
10.2、增加
增加,写法:字典[kay] = 值
dict4 = {"name": "tom", "age": "8", "gender": "女"}
dict4["id"] = 100
print(dict4)
# 结果:
>>> {'name': 'tom', 'age': '8', 'gender': '女', 'id': 100}
10.3 、修改
写法:字典序列[key] = 值
dict4 = {"name": "tom", "age": "8", "gender": "女"}
dict4["name"] = "mei" # ”键“要在字典中
print(dict4)
# 结果:
>>> {'name': 'mei', 'age': '8', 'gender': '女'}
10.4、删除
del():del 字典名或del(字典名),删除整个字典或者键值对
# 删除字典
dict4 = {"name": "tom", "age": "8", "gender": "女"}
del dict4
print(dict4)
# 结果:
>>> 报错,字典未定义
>>> Traceback (most recent call last):
>>> ...
删除键值对
dict4 = {"name": "tom", "age": "8", "gender": "女"}
del dict4["name"] # 删除整个键值对
print(dict4)
# 结果:
>>> {'age': '8', 'gender': '女'}
dict4 = {"name": "tom", "age": "8", "gender": "女"}
del(dict4["age"])
print(dict4)
# 结果:
>>> {'name': 'tom', 'gender': '女'}
.clear():字典名.celar(),清空字典中的数据
dict4 = {"name": "tom", "age": "8", "gender": "女"}
dict4.clear()
print(dict4)
# 结果:
>>> {} #空字典
10.5、查找
10.5.1、按key查找
按key查找:字典名[key],存在返回key对应的值,不存在报错
dict5 = {"name": "tom", "age": "8", "gender": "女"}
print(dict5["gender"])
# 结果:
>>> 女
10.5.2、按函数查找
get():字典名.get(key),存在返回key对应的值,不存在返回None—>空
dict6 = {"name": "tom", "age": "8", "gender": "女"}
print(dict6.get("name")) # tom
print(dict6.get("names")) # Nome
Keys:字典名.keys(),查找字典中所有的key,并返回 可迭代对象->即序列,可以用for循环循环的对象(如:str 字符串,list 列表,tuple 元组,srt 集合,dict 字典)
dict6 = {"name": "tom", "age": "8", "gender": "女"}
print(dict6.keys())
# 结果:
>>> dict_keys(['name', 'age', 'gender']) # 返回列表
valuse():字典名.values(),查找字典中所有的values,并且返回可迭代对象
dict6 = {"name": "tom", "age": "8", "gender": "女"}
print(dict6.values())
# 结果;
>>> dict_values(['tom', '8', '女']) # 返回列表
items():字典名.items(),查找字典中所有的键值对,并且返回可迭代对象:列表中数据的数据类型是元组
dict6 = {"name": "tom", "age": "8", "gender": "女"}
print(dict6.items())
# 结果:
>>> dict_items([('name', 'tom'), ('age', '8'), ('gender', '女')])
10.6、字典的循环遍历
字典的循环遍历——>通过循环拿出里面的键值对
遍历所有key
dict7 = {"name": "tom", "age": "8", "gender": "女"}
for key in dict7.keys(): # .keys 查找字典中所有的key
print(key)
# 结果:
>>> name
>>> age
>>> gender
遍历所有values
dict7 = {"name": "tom", "age": "8", "gender": "女"}
for va in dict7.values(): # .values 查找所有的values
print(va)
# 结果:
>>> tom
>>> 8
>>> 女
遍历元素->元素指数据也等于键值对
dict7 = {"name": "tom", "age": "8", "gender": "女"}
for item in dict7.items(): # .items 查找所有的键值对
print(item)
# 结果:
>>> ('name', 'tom')
>>> ('age', '8')
>>> ('gender', '女')
遍历键值对,一个键一个值进行拆分
dict7 = {"name": "tom", "age": "8", "gender": "女"}
for key, val in dict7.items(): # 注意for后面的写法
print(key)
print(val)
# 结果:
>>> name
>>> tom
>>> age
>>> 8
>>> gender
>>> 女
dict7 = {"name": "tom", "age": "8", "gender": "女"}
for key, val in dict7.items():
print(f"{key} = {val}")
# 结果;
>>> name = tom
>>> age = 8
>>> gender = 女
10.7、拆包与组包
将一个序列的数据拆开分为多个数据这个行为叫拆包
将多个数据(值)赋给一个变量默认类型为元组,这个行为叫组包
zb = 10, 20, "sjb"
print(type(zb))
# 结果:
>>> <class 'tuple'>