1.字典的概念
字典是一种存储键值对的结构。
在python中能够根据键(key)来快速找到值(value)
根据key能够快速的找到value(一对一的映射关系)
在python的字典中,可以同时包含很多个键值对,同时要求这些键,不能重复。
2.创建字典
如上图所示,是a = {} 或者b = dict()这两种方式都可以去创建字典。
如上图所示,不是所有的数据类型都可以作为key,但是对于作为value的数据类型确实没有约束的。
使用英文逗号来分隔每一组的键值对,
在key的后面要用英文冒号来分隔value
英文逗号来分隔不同键值对,
冒号来分隔键和值,
3.在字典中查找key
1.使用in来判断key是否在字典中存在,并且返回布尔值。
因为in只是判断key是否在字典中存在,而和value无关,所以即使in所查找的值在字典中的value中存在,也只会返回False。
如上图所示,可以使用in来判断所查找内容在字典的key中是否存在,可以使用not in来判断key在字典中是否不存在。
2.可以使用[ ] 来根据key 获取到value
如上图所示,print(a[key])
这样的方式就可以获取到元组a中key所对应的value值。
如上图所示,KeyError表示当前查找的key在字典中是不存在的,
对于字典来说,使用in或者[ ]来获取value,都是非常高效的操作!
对于列表来说,使用in比较低效的,而使用[ ] 是比较高效的~
对于字典来说[key ]来获取value,使用了特殊的数据结构:哈希表
对于列表来说,使用[ ] 来获取元素类似于使用了类似于数组/顺序表取下标
对于列表来说,使用in比较低效的,因为需要把整个列表遍历一遍,
4.关于字典中的新增元素和修改元素操作
1.在字典中新增元素,使用[ ]来进行。
如上图所示,print(a['calssId']),当进行对字典的一个读取操作时,如果字典中没有相应的key,就会返回keyerror的操作,
如上图所示,a['score'] = 90 ,这个操作是对字典a中,添加一个key=score,value=90
2.在字典中根据已经存在的key修改value,
如果在字典a中根据已经存在key了,那么a[ 已经存在的key] = 新的value
这样的操作就是在修改已经存在的key的value值。
如果key不存在,往里写入,相当于新增键值对,
如果key不存在,往里写入,则相当于根据key修改value。
这里就和前面说的变量创建,是类似的~
a= 10#a当前不存在,这就是定义变量(创建新变量)
a = 20#a当前已经存在了,这里就是修改变量~
4.在python中删除一个键值对
字典的各种操作,就是针对key来进行的!
新增,删除,获取value,修改value
使用pop方法,根据key来删除键值对~
即字典名称.pop(key名称)
5. 理解字典操作的效率
这里常数级的意思是无论字典中有多少元素~
新增,修改,查找,删除,操作都是固定时间,不会因为元素多了,操作就慢了,
字典中的key要求不能重复。
6.字典的遍历
直接使用for循环来遍历字典
如上图所示,可以使用for循环来遍历字典,for key in 字典名称:print (key,a[key])
来实现key和value的配对输出
keys()获取到字典中的所有key
values()获取到字典中的所有values
items()获取到字典中的所有键值对。
print(a.keys())
如上图所示,是利用for key,value in a.items():
print(key,value)
7.可哈希的类型
在python语言中列表和字典是不可哈希的,所以就不能作为字典的key
而元组等数据类型是可以哈希的,所以就能作为字典的key
一般认为在python中可变的对象,一般是不可以哈希的,而不可变的对象,一般是可哈希的。
而且在python中专门提供了一个函数hash,来计算一个数据的哈希值。
字典,列表,元组python语言中非常常用的内置类型!相比于int,str,float
他们内部可以再包含其他元素了,这就相当于容器类/集合类结构。