python内置字典:dict支持key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样取出来的时候才能根据key拿到value。
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会将前面的值覆盖掉。
如果key不存在,dict就会报错
要避免key不存在的错误,有两种方法:
1)通过in判断key是否存在
>>>d={'a':'1'}
>>>a in d
True
2)通过dict提供的get方法,如果key不存在啊,可以返回None,或者指定的value
>>>d.get('b')
None
>>>d.get('b',-1)
-1
要删除一个key,用pop(key)方法,对应的value也会从dict中删除
>>>d.pop('a')
dict内部存放的顺序与key放入的顺序是没有关系的
dict的key必须是不可变对象,这是因为dict要根据key来计算value的存储位置,这个通过key计算位置的算法称为哈希算法,要保证hash的正确性,作为key的对象就不能变。
在python中,字符串、整数都是不变的,可以放心作为key,而list是可变的,就不能作为key。
set与dict类似,也是一组key的集合,但不存储value,由于key不能重复,所以,在set中,没有重复的key
set显示的顺序也不代表set是有序的
>>>s = set([1,2,3])
>>>s
{1,2,3}
通过add(key)方法可以添加元素到set中,可以重复添加
>>>s.add()
>>>s
{1,2,3,4}
通过remove(key)方法删除元素
>>>s.remove(4)
>>>s
{1,2,3}
set可以看成数学重复元素的集合,因此,两个set可以做数学意义上的交集和并集操作。
>>>s1=set([1,2,3])
>>>s2=set([2,3,4])
>>>s1&s2
{2,3}
>>>s1|s2
{1,2,3,4}
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放可变对象。