Python字典
一、字典表
关于字典:一个可以存储具有一系列映射关系的数据结构即为字典表。字典是Python中的一种无序、可变、有键的数据结构。它是一个键-值对的集合,每个键都唯一且不可变,与每个键关联的值可以是任何数据类型(包括整数、字符串、列表、甚至其他字典)。字典使用大括号 {} 来创建,每个键值对用冒号 : 分隔,键和值之间用逗号 , 分隔。
字典表支持的数据类型:
1 2 3 4 5 6 7 | name = '正正' #字符串str age = 18 #整数Int height = 1.74 #浮点型float is_yes = True #布尔bool pets = [ '狗' , '猫' , '鱼' ] #列表list work_cities = ( '北京' , '上海' ) #元组Tuple teacher = { '姓名' : '正正' ,} #字典Dict |
1 2 3 4 5 6 7 8 9 | dict_Data = { '学校' : '万门大学' , #字符串 '创建于' : 2012 , #整数 '课程' :[ 'Python基础' , 'Python Django' , 'Python爬虫' ], #列表 '部门' :[ '策划部' , '市场部' , '人力资源' ], #元组 '老师' :{ 'Python基础' : '正正' , 'Django' : '宁夫' } } print (dict_Data) print ( type (dict_Data)) |
Dict的2个不准:(1)不准改变(KEY)(2)键(KEY)不允许重复
Dict的4个支持:(1)增加键(KEY)和值(Value)(2)删除键(KEY)和值(Value)(3)基于键(KEY)改变值(Value)(4)基于键(KEY)查询值(Value)
Dict的2个注意:(1)只能使用不可变类型作为键(2)通常不使用数字(int/float)作为键
二、字典表声明
方法一:空值声明
1 2 | dict_1 = dict () print (dict_1) |
方法二:空值创建
1 2 | dict_2 = {} #推荐 print (dict_2) |
方法三:非空值创建
1 2 3 4 5 6 | dict_3 = { '姓名' : 'mike' , '年龄' : 20 } dict_4 = dict ({ '姓名' : 'mike' , '年龄' : 20 }) dict_5 = dict (姓名 = 'mike' ,年龄 = 20 ) print (dict_3) print (dict_4) print (dict_5) |
按照key:value的格式可以建立多个键值对(items)的字典表,一个键和一个值叫键值对,在Python里这个叫一个item,全部字典表里的键值对那就是items。
字典表的语法规则:
1 2 | dict_3 = { '姓名' : 'mike' , '年龄' : 20 , '城市' : '北京' } 键值之间 冒号:分割 键值对(item)之间的分割使用逗号 |
字典表中加入元组或者列表
1 2 3 4 | dict_3 = { '姓名' : 'mike' , '年龄' : 20 , '城市' : '北京' } dict_4 = { '姓名' :( 'mike' , 'Tim' ), '城市' :[ '北京' , '上海' ]} print (dict_4[ '姓名' ]) print (dict_4[ '城市' ]) |
('mike', 'Tim')
['北京', '上海']
注意列表、元组[]、()外,不要加引号否则会转成字符串
三、字典表基本操作
3.1、增加字典表的值
1 2 3 4 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' } # 增加数据 info[ '城市' ] = '上海' #字典名[键]=添加的值 print (info[ '城市' ]) |
如果键值不存在,则为增加数据;如果键值存在,则为修改数据
3.2、修改字典表数据的值
1 2 3 4 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' } # 修改数据 info[ '年龄' ] = 29 #字典名[键]=修改的值 print (info[ '年龄' ]) |
3.3、查询获取数据的值
1 2 3 4 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' } # 查询数据 print (info[ '姓名' ]) print (info.get( '姓名' )) |
3.4、删除字典表中的值,清空字典
1 2 3 4 5 6 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' } # 删除数据 del info[ '性别' ] info.pop( '性别' ) info.pop() #会默认从尾开始删除 # 清空字典 <br>info.clear() |
3.5、字典表长度
1 2 3 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' } # 字典表长度 print ( len (info)) |
3.6、字典表数据类型
1 2 3 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' } # 字典表类型 print ( type (info)) |
3.7、基于列表创建字典
1 2 3 | keys = [ '姓名' , '年龄' , '祖籍' , '身高' ] new_dict = dict .fromkeys(keys) #可以设置值,否则默认为None print (new_dict) #输出为{'姓名': None, '年龄': None, '祖籍': None, '身高': None} |
3.8、基于键查询包含关系
1 2 | dict_1 = { '姓名' : None , '年龄' : None , '祖籍' : None , '身高' : None } print ( '年龄' in new_dict) |
3.9、返回字典里的键值对
1 2 3 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' , '城市' : '上海' } for k,v in info.items(): print (k,v) |
在for循环使用,字典.items()返回一个键key,值value的可迭代对象
3.10、返回字典里的键、值
1 2 3 | info = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' , '城市' : '上海' } print (info.keys()) print (info.values()) |
字典.keys() 返回当前字典包含所有键的可迭代对象,类似items
字典.values()返回当前字典包含所有值的可迭代对象,类似items
3.11 字典的合并
1 2 3 4 | dict_1 = { 'name' : 'mike' , 'age' : '28' } dict_2 = { 'name' : 'nico' , 'age' : '36' , 'height' : '1.72' } dict_1.update(dict_2) print (dict_1) |
输出:{'name': 'nico', 'age': '36', 'height': '1.72'}
遇到重复key,更新key值,遇到不存在直接增加
3.12 查询键key不存在则添加
1 2 3 4 5 6 | dict_1 = { 'Name' : 'zk' , 'age' : 29 , 'sex' : 'male' } print (dict_1) dict_1.setdefault( 'job' , 'development' ) print (dict_1) dict_1.setdefault( 'Name' , 'zk' ) print (dict_1) |
输出:
{'Name': 'zk', 'age': 29, 'sex': 'male'}
{'Name': 'zk', 'age': 29, 'sex': 'male', 'job': 'development'}
{'Name': 'zk', 'age': 29, 'sex': 'male', 'job': 'development'}
如果Name存在,则不作为,如果job不存在,则直接添加job和默认值
3.13 综合实例
1 2 3 4 5 6 7 8 9 10 | salary = { '一月' : 20000 , '二月' : 30000 , '三月' : 40000 } total_salary = 0 for month,salary_month in salary.items(): total_salary = total_salary + int (salary_month) print (f "{month}的工资是:{salary_month}" ) print (total_salary) |
输出:
一月的工资是:20000
二月的工资是:30000
三月的工资是:40000
90000
3.14 数据的组成,字典和列表的结合
1 2 3 4 5 6 7 8 9 10 | #用列表和字典搭建一个简单的数据结构 employee_1 = { '姓名' : '张三' , '年龄' : 20 , '性别' : '男' , '工资' : 10000 } employee_2 = { '姓名' : '李四' , '年龄' : 21 , '性别' : '男' , '工资' : 8000 } employee_3 = { '姓名' : '王五' , '年龄' : 22 , '性别' : '男' , '工资' : 9000 } HR_data = [employee_1,employee_2,employee_3] print (HR_data) for employee_data in HR_data: if employee_data[ '工资' ]> = 9000 : print (employee_data[ '姓名' ]) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-04-08 SpringBoot(八)----SpringBoot配置日志文件
2020-04-08 SpringBoot(七)-----查看配置报告