Python 字典
字典:dict,全称是dictionary,它具有极快的查找速度;字典是一种key-value的数据类型,是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在大括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 } 如果不为 dict() 函数传入任何参数,则代表创建一个空的字典。例如如下代码: d1 = {} #创建空字典 d2 = dict() #创建空字典
比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则无法记录两组数据之间的关联关系。
为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的。
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重。
dict = { 'username': 'brf', 'password': '123456', 'money': 20, 'addr': '北京' }
程序既可使用花括号语法来创建字典,也可使用 dict() 函数来创建字典。实际上,dict 是一种类型,它就是 Python 中的字典类型。
在使用花括号语法创建字典时,花括号中应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。
字典的基本用法
对于初学者而言,应牢记字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:
- 通过 key 访问 value 。
- 通过 key 添加 key-value 对。
- 通过 key 删除 key-value 对。
- 通过 key 修改 key-value 对。
- 通过 key 判断指定 key-value 对是否存在。
- 通过 key 访问 value 使用的也是方括号语法,就像前面介绍的列表和元组一样,只是此时在方括号中放的是 key,而不是列表或元组中的索引。
(1)增:
stu_info = { 'username':'brf', 'password':'123456', 'money':20, 'addr':'北京' } stu_info['sex'] = 'man' stu_info['name'] = '大白' stu_info['age'] = 18 stu_info.setdefault('class','双子座') print('之前的',stu_info) stu_info.setdefault('age',38) #如果使用setdefault,key已经存在了,就不会修改原来key的值 stu_info['name']='大白2' print('之后的',stu_info) 之前的 {'money': 20, 'sex': 'man', 'class': '双子座', 'addr': '北京', 'age': 18, 'username': 'brf', 'name': '大白', 'password': '123456'} 之后的 {'money': 20, 'sex': 'man', 'class': '双子座', 'addr': '北京', 'age': 18, 'username': 'brf', 'name': '大白2', 'password': '123456'}
(2)修改:
stu_info = { 'username':'brf', 'password':'123456', 'money':20, 'addr':'北京' } stu_info['addr'] = '河北' print('修改后:',stu_info) 修改后: {'money': 20, 'addr': '河北', 'username': 'brf', 'password': '123456'}
(3)取值:
stu_info = { 'username':'brf', 'password':'123456', 'money':20, 'addr':'北京' } print('money:',stu_info['money']) print('addr:',stu_info['addr']) money: 20 addr: 北京
stu_info = { 'username':'brf', 'password':'123456', 'money':20, 'addr':'北京' } print('所有的key:',stu_info.keys()) # .keys()取到字典里面所有的key print('所有的value:',stu_info.values()) # .values()取到字典里面所有的value 所有的key: dict_keys(['password', 'addr', 'username', 'money']) 所有的value: dict_values(['123456', '北京', 'brf', 20])
stu_info = { 'username':'brf', 'password':'123456', 'money':20, 'addr':'北京' } print( '普通方法',stu_info['name2'] ) #取不存在的会报错 print('get方法',stu_info.get('name:','0')) #取不存在不会报错,会打印出指定那个
(4)删除:
stu_info = { 'username':'brf', 'password':'123456', 'money':20, 'addr':'北京' } stu_info.pop('username')#删除指定元素 del stu_info['money']#删除指定元素 stu_info.popitem()#随机删除一个元素 stu_info.clear() #清空
(5)取值添加:
d1 = {} d2 = {'abc':1234} d1.update(d2) #更新字典值,如果key存在的话,就更新,不存在的话就添加 print('update方法:',d1)
d.keys() #取到所有的key
d.values #取到所有的value
d.items() #取到key和value update方法: {'abc': 1234}
(6)字典转换成一个list
d1 = {'abc':1234} print(d1.items()) dict_items([('abc', 1234)])
(7)循环字典:
dic = {'stu1': 'dabai', 'stu2': 'haha', 'stu3': 'win'} for k in dic: print(k, dic[k]) # 打印key和value的值,推荐使用这种方式,速度快 for k, v in dic.items(): print(k, v) # 打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高
本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/11503386.html