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中自动被过滤。

 

posted on 2018-01-23 14:18  HE不言  阅读(123)  评论(0)    收藏  举报