(入门)dict与set

所有笔记内容参考廖雪峰官网,需要详细了解大家可以去这个网站,我这里主要做笔记方便自己复习

dict

Python中内置了字典:dict的支持,全称为dict,类似于java中的map,使用键值对的形式存储,具有非常快的查找速度,例如根据名字查找对应的成绩:

d={'A':99,'B':64,'C':55}

print(d['A'])

①我们可以使用类似与d[‘A’]=55的语句修改对应键的值

②如果在dict中找不到对应的键,那么会报错,可以使用类似于‘A’in d进行判断,语句返回的是一个bool值;第二种就是可以通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value,如d.get(‘D’)或者d.get(“D”,66)

③要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

如:

d.pop('C')

执行语句之后d变为d={‘A’:99,’B’:64}

与list比较,dict的特点:
  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。注意dict中的key必须是不可变对象,通过key计算位置的算法成为哈希算法

set

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

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

例如

s=set([1,2,3])

注意:在set中的这个list如果其中含有重复的元素,那么得到的最终结果会去重,也就是说

s=set([1,1,2,2,3,3])

最终s={1,2,3}

add(key):将key这个值添加至set中,可以重复添加,但是不会产生任何效果,因为上面讲到会去重

​ 例如:s.add(5)

remove(key):将key这个值在set中去除 例如:s.remove(4)

注意:set可以看成是数学意义上的集合,所以两个set可以做交并集等操作。

下面是说的是不可变对象,我不知道这里插这么一个知识是什么意思,但是了解了解总是好的。

不可变对象

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

对于可变对象,例如list,对list进行操作,list内部的内容是会发生变化的,例如下面代码:

a=['c,'a','b']
a.sort()        #其中sort是用来对list中的元素进行排序的(自我理解)
#完成上面的语句之后,a变为['a','b','c']

那么对于不可变对象来说,比如:

a='abc'
a.replace('a','A')
#完成上面之后,a还是'abc'

这里,字符串有一个replace方法,但是变量a最终还会是’abc’,然而,

a = 'abc'
b = a.replace('a', 'A')
#这是b的值会是'Abc'

a是变量,‘abc’才是字符串对象,变量a的是指向‘abc’这个对象的,而字符串对象是不会发生改变的,所以不会发生改变,但是当我们用另一个变量去接收改变之后的字符串对象,我们还是可以获取到那个改变的值

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值