dict
python 内置了字典 dict,dictionary,在其他语言中也称 map,使用键值(key-value)存储,具有极快的查找速度
####################### 声明 ################################## 声明一个 dicttable = {'name':'zhangsan','age':18}####################### 查询 ################################## 通过 key 查询 value:key 不存在时报错table['name']# 如果不确定dict中是否存在某key,有如下两种方法:# 1.使用 in 关键字进行判断'salary' in table # 返回 True# 2.使用 dict 提供的get()方法table.get('salary') # key不存在时返回 None,None在python交互环境中不显示结果table.get('salary', -1) # key不存在时返回-1,即自定义返回值####################### 插入 ################################## 插入元素table['salary'] = 3600####################### 更新 ################################## 更新元素:相同 key 的赋值会进行更新table['salary'] = 6000####################### 删除 ################################## 删除一个 key,传入的 key 必须在dict中,否则报错table.pop('salary')
注意事项:
- dict 的 key 必须为不可变对象,如字符串、整数等
- dict 底层使用的是哈希表
- 元组虽然是不可变对象,但是当元组中存在可变对象如 list 时,由于 list 为可变元素,不支持 hash 方法,因此会抛出异常
>>> table[(1,2,[2,3])] = 2Traceback (most recent call last):File "<pyshell#13>", line 1, in <module>table[(1,2,[2,3])] = 2TypeError: unhashable type: 'list'
dict 与 list 比较
dict:用空间换时间
- 查找和插入的速度极快,不会随着key的增加而变慢
- 需要占用大量的内存,内存浪费多
list:
- 查找和插入的时间随着元素的增加而增加
- 占用空间小,浪费内存很少
set
set 类似于 dict,也是一组 key 的集合,但不存储 value,且不允许有重复元素,因此不支持存放可变元素
####################### 创建set ################################## 通过 list 创建 set:集合中的重复元素会被过滤s = set([1,2,3])# 直接创建s = {1,2,3}####################### 往set中添加元素 ################################## add(key):添加重复元素不会报错,但不会修改集合s.add(4)####################### 删除set中的元素 ################################## remove(key)s.remove(2)####################### set运算 ################################## &:交集# |:并集
不可变对象
在 python 中,字符串 str、元组 tuple、整数都是不可变对象,而 list 属于可变对象。
- 对于可变对象,如list,对其进行操作,list 内部的内容会发生变化
- 对于不可变对象,如 str,对 str 进行操作时,如 str.replace() 方法,其不是直接改变了 str ,而是改变了变量的引用
