2019.7.20 字典和集合(dict与set)
1、字典/dict
dict全称dictionary,使用键-值(Key-Value)存储方式,可以加快查找速度
特点:用{}包括的一组Key-Value元素,Key-Value用':'连接
举例:D={'Michael':95,'Bob':70,'Tracy':85}是一个字典对象
通过对象名[Key]的方式可以迅速访问Key所对应的Value
D['Michael']=95
>>> D={'Michael':95,'Bob':80,'Tracy':85}
>>> D['Michael']
95
给定一个Key之后,dict会在内部直接计算出Key所对应的'页码',而不是从头到尾依次查一遍,所以速度比列表快
在字典中添加元素,可以直接通过dict[Key]=Value的方式进行,因为不按顺序读取,所以存储位置对读取速度没有影响
如:
>>> D['Leo']=89 >>> D['Leo'] 89
注意:一个Key只能对应一个Value,因此后来的Value给之前的Key,会覆盖该Key本来对应的Value
如果Key不存在的话,就会出现KeyError
>>> D['Ki'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Ki'
检查Key是否存在的方式有两种:
1、in
>>> 'Ki' in D False
2、dict提供的get方法,如果Key不存在,将会返回None或者自己指定的值
>>> D.get('Ki',0) 0 >>> A=D.get('Ki') >>> print A None
删除Key:dict.pop(Key)
>>> D.pop('Bob') 80 >>> D {'Michael': 95, 'Tracy': 85, 'Leo': 89}
DIct与List的区别:Dict查找速度快,占用空间大,是用空间换取时间,而List则相反
注意:dict中的Key元素必须是不可变的,比如字符串,整数等,而List是可变的,因此不能作为Key
通过Key找Value的算法叫Hash算法
2、集合/Set
一组Key的集合,但不存在Value。Set中的Key不能重复,因此Set中不存在重复的Key
集合通过方法set([])构建,[]表示传入的对象是List
重复元素在Set构建时自动被过滤,如:
>>> S=set([1, 1, 1, 2, 2, 3, 5, 6, 6]) >>> S set([1, 2, 3, 5, 6])
对set可以进行的操作:
添加Key:S.add(Key)
>>> S.add(4) >>> S set([1, 2, 3, 4, 5, 6])
移除Key:S.remove(Key)
>>> S.remove(3) >>> S set([1, 2, 4, 5, 6])
两个集合间可以做并(|)交(&)集运算
>>> S2=set([1,2,3,7]) >>> S2 set([1, 2, 3, 7])
交集& >>> S3=S&S2 >>> S3 set([1, 2])
并集| >>> S4=S|S2 >>> S4 set([1, 2, 3, 4, 5, 6, 7]
Set与Dict的唯一区别就是Set中的Key没有对应的Value,在可变对象方面上,Set中的Key同样不能是可变对象如list
最常用的Key类型是字符串str
3、可变对象与不可变对象
对于可变对象如List进行操作时,List中的内容是会发生变化的,如:
>>> L=['D','A','F'] >>> L ['D', 'A', 'F'] >>> L.sort() >>> L ['A', 'D', 'F']
而对于不可变对象如字符串str,进行如下操作时:
>>> s='aef' >>> s.replace('a','A') 'Aef' >>> s 'aef'
可以理解为,replace()方法创建了一个新的字符串并对其进行修改,原字符串a并没有发生改变,原字符串和新字符串具有不同的地址

浙公网安备 33010602011771号