Python 学习笔记4(dict+set)

1:dict

dict其实就是对应c语言的map
看下面的格式

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

注意d=后面是大括号
也可以像c语言的map一样通过数组下标赋值

>>> d['Adam'] = 67
>>> d['Adam']
67

和c语言类似,由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88

在访问下标中,c语言如果访问下标原先不存在那么c语言会自己建一个相对应的值,赋值为0,但是如果是py就会报错
也就是说不能直接访问没有key不存在的值

>>> d['Thomas']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Thomas'

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:

>>> 'Thomas' in d
False

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

注意:返回None的时候Python的交互环境不显示结果。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:(类似于c语言map的earse)

>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

注意:不能直接上来就定义d[‘a’]=1,要先d={},然后再d[‘a’]=1这样就行了

set

这个set和cpp的set有点类似,但是定义的时候要创建一个set,需要提供一个list作为输入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

如果下面这么写就会报错

s=set(1,2,3)

和cpp的set一样他不能包含相同的元素,重复元素在set中自动被过滤:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:(有点像cpp的insert)

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

通过remove(key)方法可以删除元素:(有点像cpp的erase)

>>> s.remove(4)
>>> s
{1, 2, 3}

py的set还有一个神奇的操作,居然可以用&和|操作(太智能了

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

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

猜你喜欢

转载自blog.csdn.net/m0_46209312/article/details/107901634