1. 字典
-
Python内置的数据结构之一,与列表一样是一个可变序列
-
以键值对的方式存储数据,字典是一个无序序列
-
示意图
- 实现原理:根据key查找到value所在的位置
1.1 字典的创建
- 最常用的方式:使用花括号
- 使用内置函数dict()
# 1. scores = {'张三':100,'李四':98,'王五':45} print(scores) #{'张三':100,'李四':98,'王五':45} # 2. student = dict(name='jack',age = 20) print(student) #{'name':'jack','age':20} # 空字典 d = {}
1.2 字典的常用操作
1.2.1字典的获取
- [ ] -> scores[‘张三’]
- get()方法 -> scores.get(‘张三’)
scores = {'张三':100,'李四':98,'王五':45} print(scores['张三']) #100 print(scores.get('张三')) #100 #区别:获取不存在的值,第一种报错KeyValue,第二种得到None print(scores['赵六']) #KeyValue print(scores.get('赵六')) #None #查找不存在的值 print(scores.get('马七'),99) # 99 # 99是在查找‘马七’所对应的value不存在时,提供的一个默认值
1.2.2 key的判断
- in / not in
scores = {'张三':100,'李四':98,'王五':45} print('张三' in scores) #True print('张三' not in scores) #False
1.2.3 字典的删除
scores = {'张三':100,'李四':98,'王五':45} del scores['张三'] print(scores) #{'李四':98,'王五':45} scores.clear() print(scores) #{}
1.2.4 字典的新增
scores = {'张三':100,'李四':98,'王五':45} scores['陈六'] = 98; print(scores) # {'张三':100,'李四':98,'王五':45,'陈六':98}
1.2.5 字典的修改
scores = {'张三':100,'李四':98,'王五':45} scores['张三'] = 60 print(scores) #{'张三':60,'李四':98,'王五':45}
1.2.6 获取字典视图
- keys() 获取key
- values() 获取value
- items() 获取key,value
scores = {'张三':100,'李四':98,'王五':45} keys = scores.keys() print(keys) # dict_keys(['张三','李四','王五']) print(list(keys)) # ['张三','李四','王五'] key视图转正列表 values = scores.values() print(values) #dict_values([100,98,45]) print(list(valurs)) #[100,98,45] items = scores.items() print(items) #dict_items([('张三':100),('李四':98),('王五':45)]) print(list(items)) #元祖[('张三':100),('李四':98),('王五':45)]
1.2.7 字典元素遍历
scores = {'张三':100,'李四':98,'王五':45} # 遍历 for item in scores: print(item) ''' 张三 李四 王五 ''' for item in scores: print(item,scores[item]) #或者print(item,scores.get(item)) ''' 张三 100 李四 98 王五 45 '''
1.3 字典的特点
- 字典中所有元素都是一个key-value对,key不能重复,value可以
- 字典中的元素时无序的
- 字典中的key必须是不可变对象
- 字典也可以根据需要动态地伸缩
- 字典会浪费较大内存,是一种空间换时间的数据结构
n = {'name':zs,'name':ls} print(n) # {'name':ls} key不能重复
1.4 字典生成式
- 内置函数zip()
- 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元祖,然后返回由这些元祖组成的列表
items = ['fruits','books','others'] prices=[97,98,99] #zip d = {item:price for item,price in zip(items,prices)} peint(d) # {'fruits':97,'books':98,'others':99} #upper转大写 d = {item.upper():price for item,price in zip(items,prices)} peint(d) # {'FRUITS':97,'BOOKS':98,'OTHERS':99} #元素个数不一样 items = ['fruits','books','others'] prices=[97,98,99,100,101,102,103] d = {item:price for item,price in zip(items,prices)} peint(d) # {'fruits':97,'books':98,'others':99}