Python基础 - 集合

dict

类似于Java的Map

定义

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

取值

d['Michael']

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

Traceback (most recent call last):
File "C:\Users\Administrator\PycharmProjects\pythonProject\forp.py", line 29, in <module>
d['Jason']
KeyError: 'Jason'

解决办法:

  1. 通过 in判断key是否存在
    'Tomas' in d
    # False
  2. 通过get()方法,如果key存在,可以返回None,或者自己指定的值。
print(d.get('Tomas')  # None
print(d.get('Tomas', -1)) # -1

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

删除

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

d.pop('Bob')

如果pop的元素不存在,就会报出异常

 d.pop('a')
Traceback (most recent call last):
File "C:\Users\Administrator\PycharmProjects\pythonProject\forp.py", line 26, in <module>
d.pop('a')
KeyError: 'a'

可以在pop()方法里添加一个默认值

d.pop('a', 0)

请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

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

而list相反:

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

所以,dict是用空间来换取时间的一种方法。

set

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