dict:字典,使用键-值(key-value)存储,具备很是快的查找速度。spa
一、初始化:d = {'Michael':95,'Bob':75,'Tracy':85}code
二、读取:d['Michael'] 95对象
这种存储方式在放进去的时候,必须根据key算出value的存放位置,这样取得时候才能根据key直接拿到value。内存
把数据放入dict的方法,除了初始化时指定外,还能够经过key放入:rem
d['Machael'] = 67get
屡次在一个key放入value会把前面的值冲掉,若是key值不存在也会报错。数学
三、判断key是否存在:in 'Thomas' in d 返回false原理
经过dict提供的get方法,若是key不存在,返回None,或本身指定的value:方法
>>> d.get('Thomas') >>> d.get('Thomas', -1) -1
四、删除:pop(key): d.pop('Bob')
五、和list相比,dict的特色:
1)查找和插入速度快,不会随着key的增长而增长。
2)须要占用大量的内存,内存浪费多。
而list相反:
1)查找和插入随着元素的增长时间增长
2)占用空间小,浪费内存不多。
set
set和dict类似,也是一组key的集合,可是不存储value。因为key不能重复,因此,在set中,没有重复的key。
一、建立一个set,须要提供一个list做为输入集合:
s = set([1,2,3])
二、重复元素在set中自动被过滤:
s = set([1,1,1,2,2,3,3])
s 1 2 3
三、添加元素:s.add(4)
四、删除元素:s.remove(4)
五、set能够当作数学意义上的无序和无重复元素的集合,所以,两个set能够作数学意义上的交集、并集等操做。
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 set([2, 3]) >>> s1 | s2 set([1, 2, 3, 4])
set和dict的惟一区别仅在于没有存储对应的value,可是,set的原理和dict同样,因此,一样不能够放入可变对象,由于没法判断两个可变对象是否相等,也就没法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。
因此,对于不变对象来讲,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会建立新的对象并返回,这样,就保证了不可变对象自己永远是不可变的。数据