Python基础之dict和set
1 dict
字典,全称为dictionary,在其他语言中也叫map,使用键值对(key-value)来存储数据,具有查找速度很快的特性,是典型的使用内存空间换查找时间的例子。
是可变的无序对象,但是key是不可变对象
- 无序的意思是字典内部的存储是和key的顺序没有关系的。
- 可变是指字典内部的元素是可以增加删除的。
- key是不可变对象是指字典要根据key值来计算value的存储位置,所以key是不可变的,否则根据同一个key计算出来的 value可能就不同,字典内部就混乱了,所以为了保证计算的准确性,必须保证key值为字符串,整数这些不可变对象,而不能是列表这些可变对象,最常用的key是字符串。
>>> key = [1,2,3]
>>> d[key] = 'alist' #定义一个key为list,将value赋值为‘alist’时就会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
- 根据key值来计算内存位置的算法叫做hash算法
1.1 list与dict的对比
list:
- 查找插入速度慢,list越大,速度越慢。
- 空间占用小,内存浪费少。
dict:
- 查找插入速度快,查找速度不会随着key的增加而减慢。
- 空间占用大,内存占用大。
打个比方:
现在有学生和学生成绩来存储,可以有两种存储方式,一种是使用list,一种是使用dict。
list方式:
name = ['any','Tom','Xiao']
score = [90,78,99]
当查找Tom分数时,需要先从第一个列表中从前往后查找Tom的位置,然后再在第二个列表对应位置取分数
dict方式:
d = {
'Any