【第三章-基础】Python 字典
3. 字典
含义:不可变序列,无序序列,键值对存储
表示:字典用放在花括号{}中一系列键值对表示
字典的特点:
1.字典中的所有 元素都是一个key-value对,key不允许重复,value可以重复
2.字典的元素是无序的
3.字典中的key必须是不可变对象
4.字典也可以根据需要动态地伸缩
5.字典会浪费较大的内存,是一种使用空间换时间的数据结构
3.1 字典的创建
"""使用花括号创建字典""" scores={"张三":100,"李四":10,"wangwu":99} print(scores)"""使用dict()函数创建""" student =dict(name="jacl",age=10) print(student)# 创建空字典 d={} print(d)
3.2 字典的获取
1. 获取方法:[ ] 和 get()方法
"""如何获取字典中的值""" scores={"张三":100,"李四":10,"wangwu":99}# 使用[]的方法 print(scores["张三"])# 使用get()方法print(scores.get("李四"))
注意事项:
1. [ ] 如果字典中不存在指定的Key,抛出keyError异常
2. get()方法取值,如果 字典中不存在指定的key,并不会抛出KeyError异常而是返回None,可以通过参数设置默认的value,以便指定的Key不存在时返回##get()来访问值
方法get()的第一个参数用于指定健,是必不可少的,第二个健为指定健不存在时要返回的值,是可选的
2. 获取字典视图的三个方法
keys()--------->获取字典中所有的key
values()------->获取字典中所有value的值
items()-------->获取字典中所有的Key,value对# 获取所有的keys值 scores={"张三":100,"李四":10,"wangwu":99} keys=scores.keys() print(keys) print(list(keys))# 获取所有的values值 value=scores.values() print(value) print(list(value))# 获取所有的键值对item=scores.items() print(item) print(list(item))
3.3 字典的增删
# key存不存在的 判断
in 指定的key在字典中存在返回TRUE
not in 指定的key在字典中不存在返回TRUEscores={"张三":100,"李四":10,"wangwu":99} print("张三"in scores) print("张三"not in scores)# 删除指定键值对 del scores["张三"] print(scores)# 新增元素 scores["1"]=98 print(scores)# 更改元素 scores["1"]=94 print(scores)
结果:
True
False
{'李四': 10, 'wangwu': 99}
{'李四': 10, 'wangwu': 99, '1': 98}
{'李四': 10, 'wangwu': 99, '1': 94}
3.4 遍历
说明:遍历数组、可以通过keys()方法对所有健进行遍历,values()对所有值进行遍历,item()对所有键值对进行遍历
scores={"张三":100,"李四":10,"wangwu":99} # 字典元素的遍历 for item in scores:print(item,scores[item])print("************************")# 使用keys(),只对健进行遍历,输出 for i in scores.keys():print(i) print("************************")# 使用values()只对值进行遍历,输出 for i in scores.values():print(i)# 使用items()对键值对进行遍历,可以声明两个变量,用于存储键值对中的健和值 print("************************") for i,j in scores.items():print(i,j)
结果:
张三 100
李四 10
wangwu 99
************************
张三
李四
wangwu
************************
100
10
99
************************
张三 100
李四 10
wangwu 99
3.5 嵌套
##字典列表
说明:先创建几个字典,然后再创建一个列表,将字典存储到列表中
# 声明一个空数组进行接收 dog=[]# 创建多个狗 for i in range(10):new_dog={"color":'Red',"type":"jiwaa",'age':3}dog.append(new_dog)# 截取前五个 for j in dog[:5]:print(j)
结果:
{'color': 'Red', 'type': 'jiwaa', 'age': 3}
{'color': 'Red', 'type': 'jiwaa', 'age': 3}
{'color': 'Red', 'type': 'jiwaa', 'age': 3}
{'color': 'Red', 'type': 'jiwaa', 'age': 3}
{'color': 'Red', 'type': 'jiwaa', 'age': 3}注意:可配合随机数,进行随机生成
##在字典中嵌套列表
# 在字典中嵌套列表 dog={"color":["red","green",'black','white'],"name":["1",'2','3','4'] }for item in dog["color"]:print(item)
解释:字典的每一个值,都是一个列表,所以可以直接遍历
3.5 字典生成式
内置函数zip():用于将可迭代对象作为参数,将对象中的元素打包成为一个元祖,然后返回由这些元祖组成的列表
items=["fruits","books","other"] prices=[96,97,98] d=zip(items,prices) print(list(d)) #利用列表进行输出
结果:[('fruits', 96), ('books', 97), ('other', 98)]