python基础 10.字典
字典
什么是字典
python内置的数据结构之一,与列表一样是可变序列
以键值对的方式存储数据,字典是一个无序列表
字典示意图:

字典的特点
战斗中所有元素都是一个key-value对,key不允许重复,value可以重复
字典中的元素是无序的
字典中的key必须是不可变对象
字典也可以根据需要动态的伸缩
字典会浪费较大的内存,是一种使用空间换时间的数据结构

1 2 3 | # 字典的特点 dic = { 'name' : '张三' , 'name' : '李四' } print (dic) # {'name': '李四'},key值重复时会出现覆盖的情况 |
字典的实现原理
字典的实现原理与查字典类似,查字典是先根据不受或拼音查找相应的页码,python中字典是根据key查找value所在位置
字典创建删除
创建:
最常用方式:使用花括号
1 | dic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } |
使用内置函数dict()
1 | dict (name = 'jack' , age = 18 ) |
空字典
1 | nulldic = {} |

字典的查询操作
字典中元素的获取
用[]获取:firstdic['张三']
用get()方法获取:firstdic.get('张三')
1 2 3 4 5 6 7 8 9 10 11 12 | # 查找字典中元素 firstdic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } seconddic = dict (name = 'jack' , age = 18 ) print (seconddic[ 'name' ]) print (firstdic.get( '张三' )) print (firstdic.get( '赵六' )) # 字典内不存在该数据时,则返回None print (firstdic.get( '赵六' , 99 )) # 99是查找字典内不存在的元素时提供的一个默认值 print (firstdic[ '赵六' ]) # 字典内不存在该数据时,则出现以下错误: # Traceback (most recent call last): # File "D:\PycharmProjects\pystu\demo.py", line 522, in <module> # print(firstdic['赵六']) # KeyError: '赵六' |

两种获取方式的区别
[]如果字典中不存在指定的key,抛出keyError
get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便制定的key不存在时返回
字典元素的常用操作
key的判断
in : 指定的key在字典中存在则返回True
not in : 指定的key在字典中不存在则返回True
1 2 3 4 5 6 | # 字典的增删改 firstdic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } seconddic = dict (name = 'jack' , age = 18 ) print ( '张三' in firstdic) print ( '张三' not in firstdic) print (firstdic) |

字典元素的删除
del score[‘张三’]
del.clear()
1 2 3 4 5 6 7 | # 字典元素的删除 firstdic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } seconddic = dict (name = 'jack' , age = 18 ) del firstdic[ '李四' ] # 删除字典中的李四 print (firstdic) firstdic.clear() # 清空字典 print (firstdic) |

字典元素的新增
firstdic['张三']=0
1 2 3 4 | # 字典元素的新增 firstdic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } firstdic[ '钱七' ] = 95 # 在字典中新增一条 print (firstdic) |

字典视图
获取字典视图
|
keys()
|
获取字典中多所有的key
|
values()
|
获取字典中多所有的value
|
|
items()
|
获取字典中多所有key,value对
|
1 2 3 4 5 6 | # 字典视图 firstdic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } seconddic = dict (name = 'jack' , age = 18 ) print (firstdic.keys(), type (firstdic.keys()), list (firstdic.keys())) # list是讲座由的key组成的视图转成列表 print (seconddic.values(), type (seconddic.values()), list (seconddic.values())) print (firstdic.items(), type (firstdic.items()), list (firstdic.items())) # 转换之后的列表元素是由元组组成 |

字典元素的遍历
1 2 3 4 | # 字典元素的遍历 firstdic = { '张三' : 100 , '李四' : 98 , '王五' : 90 } for i in firstdic: print (i, firstdic[i], firstdic.get(i)) |

字典生成式
内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回有这些元组组成的列表
1 2 3 4 | items = [ 'Fruits' , 'Books' , 'Others' ] prices = [ 10 , 20 , 30 , 100 ] d = {item: price for item, price in zip (items, prices)} print (d) |
注:如果两个列表元素数量不同,选择少的那个建组

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报