目录
1、什么是字典
- Python内置的数据结构之一,与列表一样是一个可变序列
- 字典与列表的区别:
字典与列表对比 条件 字典 列表 存储元素 多个 多对 有无序列 无序 有序 (1)字典无序序列:通过hash()计算键的存储位置所以字典是无序的,并不是按顺序排列
(2)列表中的元素是一个一个的,字典中的元素是一对一对的
如:
列表:lst1=[1,2,3,4,5,6]
字典:scores={‘张三’:100,‘李四’:98,‘王五’,45}
- 字典是以键值对的方式存储数据,字典是一个无序的序列
注:键值:冒号之前叫建,冒号之后叫值
2、字典的创建
2.1 字典的创建:
方式1:使用花括号
方式2:使用内置函数dict()
#方法1
scores={'张三':90,'李四':50,'王五':45}
print(scores)#{'张三': 90, '李四': 50, '王五': 45}
print(type(scores))#<class 'dict'>
#方法2
student=dict(name='张三',age=20)
print(student)#{'name': '张三', 'age': 20}
print(type(student))#<class 'dict'>
2.2 字典的特点:
- 字典中的所以元素都是一对,key不允许重复,value可以重复
scores={'张三':90,'张三':50}
print(scores)#{'张三': 50} 注:字典中键不可重复
scores={'张三':90,'李四':90}
print(scores)#{'张三': 90, '李四': 90} 注:字典中值可重复
- 字典中的元素是无序的
- 字典中的key必须是不可变对象
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
3、字典的查询操作
获取字典元素 方式 举例 [] 举例:scores[‘张三’] get()方法 举例:scores.get('张三')
3.1 采用中括号[]进行字典的查询
scores={'张三':90,'李四':50,'王五':45}
print(scores)#{'张三': 90, '李四': 50, '王五': 45}
print(type(scores))#<class 'dict'>
print(scores['张三'])#90
print(scores.get('张三'))#90
3.2 采用get()方法进行字典的查询
scores={'张三':90,'李四':50,'王五':45}
print(scores)#{'张三': 90, '李四': 50, '王五': 45}
print(type(scores))#<class 'dict'>
print(scores['张三'])#90
print(scores.get('张三'))#90
#print(scores['陈六'])#报错:KeyError: '陈六'
print(scores.get('陈六'))#None
print(scores.get('陈六','没有此键'))#没有此键
3.3 字典元素的遍历
scores={'张三':90,'李四':50,'王五':45}
for item in scores:
print(item,scores[item],scores.get(item))
#运行结果:
'''
张三 90 90
李四 50 50
王五 45 45
'''
4、字典元素的增,删,该操作
4.1 前言:key键的判断:
scores={'张三':90,'李四':50,'王五':45}
#key的判断
print('张三' in scores)#True
print('张三' not in scores)#False
4.2 字典元素增加:
scores={'张三':90,'李四':50,'王五':45}
scores['陈六']=10
print(scores)#{'张三': 90, '李四': 50, '王五': 45, '陈六': 10}
4.3 字典元素删除:
scores={'张三':90,'李四':50,'王五':45}
del scores['李四']
print(scores)#{'张三': 90, '王五': 45}
4.4 字典元素更改:
scores={'张三':90,'李四':50,'王五':45}
print(scores)#{'张三': 90, '李四': 50, '王五': 45}
scores['李四']=80
print(scores)#{'张三': 90, '李四': 80, '王五': 45}
4.5 清空字典clear():
scores={'张三':90,'李四':50,'王五':45}
scores.clear()
print(scores)#{}
4.6 删除字典del
scores={'张三':90,'李四':50,'王五':45}
print(scores)#{'张三': 90, '李四': 50, '王五': 45}
del scores
print(scores)#NameError: name 'scores' is not defined
5、获取字典视图的三个方法:
获取字典视图 方法 作用 keys() 获取字典中所以key(将其所有key组成列表) values() 获取字典中所有value(将其所有value组成列表) items() 获取字典中所有key,value对(将其所有items组成列表)
scores={'张三':90,'李四':50,'王五':45}
key=scores.keys()
print(key,type(key))
print(list(key))
#dict_keys(['张三', '李四', '王五']) <class 'dict_keys'>
value=scores.values()
print(value,type(value))
print(list(value))
#dict_values([90, 50, 45]) 'dict_values'>
item=scores.items()
print(item,type(item))
print(list(item))
#dict_items([('张三', 90), ('李四', 50), ('王五', 45)]) <class 'dict_items'>
6、字典推导式
例题:以items为键prices为值构建字典
items=['Fruits','Books','Others'] prices=[96,78,58]
注:需要使用内置函数zip()
zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回有这些元组组成的序列
items=['Fruits','Books','Others']
prices=[96,78,58]
d={item:price for item,price in zip(items,prices)}
print(d)#{'Fruits': 96, 'Books': 78, 'Others': 58}
d={item.upper():price for item,price in zip(items,prices)}
print(d)#{'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 58}