dict和set

发布时间 2023-03-27 15:32:29作者: 阡陌芊芊

Python中内置了字典:dict全称dictionary,在其它语言中也称为map,使用键-值 (key-value)存储,具有极快的查找速度 。

这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入

一个key对应一个value,多次对一个key放入value,后面的值会把前面的值冲掉

 

 如果key不存在 ,dick就会报错;

避免key不存在的错误,一是通过in判断key是否存在 ;二是通过dick提供的get()方法,如果key不存在,可以返回none,或者自己指定的value

 

 要删除一个key,使用pop(key)方法,对应的key和value是一起删除

 

 dick内部存放的顺序和key放入的顺序是没有关系的

 dict的key必须是不可变对象

这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

在python中,字符串、整数等都是不可变的,因此,可以放心地作为key 。而list是可变的,就不能作为key

 

set

set和dict类似,也是一组key的集合,但它不存储value。它们都不是有序的,key必须是不可变对象

因key不能重复,所以,在set中没有重复的key。要创建一个set,需要提供一个list作为输入集合。list是可变的,就不能作为key

重复的元素在set 中会自动被过滤

 

 通过add(key)添加元素到set中,可以重复添加,但不会有效果;

通过remove(key)方法删除元素

 

 set可以看成是数据意义上的无序和无重复元素的集合,所以,两个set可以做数据意义上的交集、并集等操作

 

 list是可变的,就不能作为key

 

 

对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些该方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。