python内置了字典,dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
举个例子,假设要根据同学们的名字查找对应的成绩,如果用list实现,需要两个list:
names=['Michael','Bob','Tracy']
scores=[95,75,85]
给定一个名字,要查找对应的成绩,就先要在names中到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。
如果用dict实现,只需要一个“名字”-“成绩”的对应表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用python写一个dict如下:
d={'Michael':95,'Bob':75,‘Tracy':85}
d['Michael']
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的
和list比较,dict有以下几个特点:
1.查找和插入的速度极快,不会随着KEY的增加而变慢;
2.需要占用大量的内存,内存浪费多。
而list相反:查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
dict使用在需要高速查找的很多地方,在python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象
这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了,这个通过key计算位置的算法称为哈希算法Hash
要保证hash的正确性,作为key的对象就不能变,在python中,字符串,整数等都是不可变的,因此,可以放心的作为key,而list是可变的,就不能作为key
set
set和dict类似,也是一组key的集合,但不能存贮vlaue,由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合
注意:传入的参数【1,2,3】是一个list,而显示的{1,2,3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不代表set是有序的。
重复元素在set中自动被过滤。