python——dict和set

dict

python的内置字典,全称为dictionary,在其他语言中也称为map,使用键值对存储,具有极快的查找速度

 

实现原理:与查字典一样

key-value存储方式:在放进去的时候,必须根据key的值算出value的位置。key-value时一一对应的,取值的时候可以根据key直接拿到value

dict初始化方法:

  1. 定义时就初始化: eg : 
     d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
  2. 通过key放入:注意:因为key-value是一一对应的,所以当对同一个key进行多次赋值时,会把前面的值覆盖
    d['Adam'] = 67

dict中其他问题:

  1. 如果dict不存在时,查找会报错
  2. 判断key是否存在的两种方法:
  • 通过in判断key是否存在 :存在返回true不存在放回false
  • >>> 'Thomas' in d
    False
  • 通过dict提供的get()方法,如果不存在,返回None,或者自己指定的value
  • >>> d.get('Thomas')
    >>> d.get('Thomas', -1)
    -1
  1. 删除:用pop(key)方法,key对应的value也会被删除

set

set可以看做是数学上无序无重复元素的集合

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

  • 创建set,需要提供一个list作为输入集合:

如: s = set([1,2,2])

在这里传入的参数是[1,2,2]是一个list,而显示的{1,2,2}只是告诉你这个set内部有1,2,2这三个元素,显示的顺序也不表示set是有序的

  • 通过add(key)方法可以添加元素到set中,可以重复添加,但是无效
  • remove(key)方法可以删除元素
  • set可以看做是数学上无序无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
  • >>> s1 = set([1, 2, 3])
    >>> s2 = set([2, 3, 4])
    >>> s1 & s2
    {2, 3}
    >>> s1 | s2
    {1, 2, 3, 4}

set与dict 区别:

set只有key,没有存储对应的value

set与dict相同:

set和dict原理一样,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部‘不会有重复元素’

不可变对象

str是不变对象,list是可变对象

可变对象:

内部的内容是可以改变的

不可变对象:

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

 

 

 

;