1.字典 dict
字典dict也是属于一种Python的数据类型,在其他语言中称为map,具有极快的查找速度,因为数据的存储是通过key:value键值对的形式进行存储
2.列表list的缺点
当我们想要存储具有映射关系的数据时,我们需要存储到两个列表中
names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]
1.给定一个名字要查找对应的成绩使用list存储,
2.需要先在names列表中找到对应的名字后,
3.再去scores列表中查找到对应成绩,list越长,耗时越长,因为列表是按照索引来查找数据
3.使用dict存储映射关系的数据
-
3.1 字典定义
1.使用{}符号来定义字典
2.键和值之间用冒号:分隔,而键值对之间用逗号,分隔
dict = {'Michael':95,'Bob':75,'Tracy':85}
-
3.2 访问字典中值
获取与键相关的值,可依次指定字典名和放在括号内的键
dict = {'Michael':95,'Bob':75,'Tracy':85}
>>> dict['Michael'] #通过字典名和key值来访问关联的值
95
-
3.3 dict查找快速的原理
因为dict是通过key和value键值对进行存储,如果我们想要定位一组数据,即定位到对应的key值即可,相比列表需要从索引0开始搜索更加快速
-
3.4 判断key值是否存在
- 使用in
>>> l1={'age1':33,'age2':45,'age3':67}
>>> 'age3' in l1
True #key存在l1字典
>>> 'age4' in l1
False #age4不存在字典l1中
- 使用get方法
1.如果key值存在,返回对应的value
2.如果key值不存在,默认返回None,交互式中不会输出,可以使用print打印出来
3.也可以自己指定打印的错误信息,key值不存在时输出,这里的wrong就是自己定义的错误输出
>>> l1.get('age1')
33
>>> l1.get('age4')
>>> l1.get('age5','wrong')
'wrong'
-
3.5 删除字典元素
1.使用pop函数,传入对应key值,会将key-value一起删除
>>> l1={'age1':33,'age2':45,'age3':67}
>>> l1.pop('age1')
33
>>> l1
{'age2': 45, 'age3': 67}
-
3.6 添加键-值对
1.字典是动态的结构,可随时在其中添加键-值对
2.要添加键-值对,可依次指定字典名、方括号括起来的key值及关联的value值
>>> scores = {'Alen':76,'Tom':90,'Bille':98}
>>> scores['Richal']=100
>>> scores
{'Alen': 76, 'Tom': 90, 'Bille': 98, 'Richal': 100}
-
3.6 dict数据特点
1.字典内部的数据存储是无序的,即两次打印输出同一个字典,排序可能不同
2.key值不可重复,具有唯一性
3.每一个key只能对应一个value
4.重复对同一个key赋值,只会存储最后依次赋值的内容
5.key的数据类型必须是不可变的,所以字符串、整数是不可变,可以作为key,list是可变对象,不可作为key值
4.集合 set
4.1 set定义
1.set和dict类似,同样存储一组不重复的key,但不同的是,set不存储value
2.创建一个set,需要提供一个列表作为输入集合
3.集合也是无序的
>>> s = set([1,2,3])
>>> s
{1, 2, 3}
4.2 重复的元素,set会自动过滤
>>> t=set([1,2,2,3,4,3])
>>> t
{1, 2, 3, 4}
4.3 给集合添加、删除元素
- 尾部添加元素 add
>>> t.add(5)
>>> t
{1, 2, 3, 4, 5}
- 移除元素 remove
>>> t
{1, 2, 3, 4, 5}
>>> t.remove(2)
>>> t
{1, 3, 4, 5}
4.4 集合可做交集 并集运算
>>> s1=set([1,2,3])
>>> s2=set([2,3,4])
>>> s1&s2 #并集使用& 表示s1和s2中都包含的元素
{2, 3}
>>> s1|s2 #交集使用| 表示s1和s2中所有不重复的元素
{1, 2, 3, 4}
网友评论