Python 字典
字典:dict,全称是dictionary,它具有极快的查找速度;字典是一种key-value的数据类型,是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在大括号({})中 ,格式如下所示:
1 2 3 4 5 | d = {key1 : value1, key2 : value2 } 如果不为 dict () 函数传入任何参数,则代表创建一个空的字典。例如如下代码: d1 = {} #创建空字典 d2 = dict () #创建空字典 |
比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则无法记录两组数据之间的关联关系。
为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的。
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重。
1 2 3 4 5 6 | 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)<br>d.keys() #取到所有的key<br>d.values #取到所有的value<br>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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架