二、dict字典
1.概述
dict也是一种存储方式,类似于list和tuple,但是,字典采用键—值(key—value)的形式存储
优点:具有极快的查找速度
2.key的特性
1.字典中的key必须唯一
2.key必须是不可变对象
例如:字符串、整数等都是不可变的,可以作为key
list是可变的,不能作为key
思考:保存一个班级中的童鞋的成绩
思路1:使用list或者tuple,但是容易发生错乱对不上号
思路2:使用二维list或者tuple,但是会比较慢
思路3:可以采用字典,将学生的学号或者名字作为key,成绩为value进行存储,方便查找
3.字典的创建
语法:
字典名 = {键1:值1,键2:值2,...}
dist1 = {'tom':90,'lili':78, 'lele':92} print(dist1)
4.字典操作
4.1访问元素
语法:元素 = 字典名[key]
dist1 = {'tom':90,'lili':78, 'lele':92} print(dist1['tom'])
注意:在key不存在的情况下,会报错
语法: 元素 = 字典.get(key)
功能:使用get的方法获取值,若key存在,则返回value的值,若key不存在则返回None
dist1 = {'tom':90,'lili':78, 'lele':92} value = dist1.get('tom') print(value)
4.2 添加元素
语法:字典名[key] = value
dist1 = {'tom':90,'lili':78, 'lele':92} dist1['lisi'] = 89 print(dist1)
注意:一个key只能对应一个value,多次对一个key的value赋值,后面的值会把前面的值覆盖掉。
4.3 删除元素
语法:字典名.pop(key)
dist1 = {'tom':90,'lili':78, 'lele':92} dist1.pop('tom') print(dist1)
5.字典的遍历
5.1 使用for循环遍历
语法:
获取键
for key in dist:
print(key)
获取值
for value in dist.values() :
print(value)
同时获取键和值
for k, v in dist.items() :
print(k, v)
注意:字典是无序的,在内存中存储是无序的,因此无法通过下标来获取值
dist1 = {'tom':90,'lili':78, 'lele':92} #获取字典的key for key in dist1: print(key) #获取字典中的value for value in dist1.values(): print(value) #同时获取字典中的key与value for k, v in dist1.items(): print(k, v)
6.与list的区别
1.dict的查找和插入的速度极快,不会随着key-value的增加而变慢,但是list在查找的时候需要从头向后挨个遍历元素,并且当数据量增大的时候,速度也会随着变慢
2.dict需要占用大量的内存,内存浪费多,而list只相当于存储了字典的key或者value部分,并且数据时紧密排列的。
三、set集合
1.概述
set与dict类似,也是一组key的集合,但与dist的区别在于set不存储value
本质:无序且无重复元素的集合
2.set的创建
语法:
set1 = set([1, 2, 3, 4, 5])
注意:创建set需要一个list或者tuple或者dist作为输入集合,重复的元素在set中会被自动的过滤
s1 = set([1, 2, 3, 4, 5]) print(s1)
3.set操作
3.1 set.add()
注意:
1.可以添加重复的元素,但是不会有效果
2.add 的元素不能是列表或者字典,因为他们是可变的
s1 = set([1, 2, 3, 4, 5]) s1.add(6) s1.add((2, 3, 4)) print(s1) #结果 {1, 2, 3, 4, 5, 6, (2, 3, 4)}
3.2 set.update()
功能:插入整个list、tuple、字符串打碎插入
注意:不能直接插入数字
s1 = set([1, 2, 3, 4, 5]) s1.update([4,"anam","hha"]) s1.update("hello") print(s1) #结果 {1, 2, 3, 4, 5, 'anam', 'l', 'o', 'h', 'e', 'hha'}
3.3 set.remove(元素)
功能:删除元素
s1 = set([1, 2, 3, 4, 5]) s1.remove(3) print(s1)
3.4 遍历元素
语法:
for i in set :
print(i)
注意:set是无序的,因此不能通过下标获取元素
for index, data in enumerate(set):
print(index, data)
可以通过这种方式,来强行添加下标
s1 = set([1, 2, 3, 4, 5]) for i in s1: print(i) for index,data in enumerate(s1): print(index, data)
3.5 交集与并集
语法:
交集 newest = set1 & set2
并集 newest = set1 | set2
s1 = set([1, 2, 3, 4, 5]) s2 = set([4, 5, 6, 7]) s3 = s1 & s2 s4 = s1 | s2 print(s3) print(s4) #结果 {4, 5} {1, 2, 3, 4, 5, 6, 7}