Python字典
一、字典表
关于字典:一个可以存储具有一系列映射关系的数据结构即为字典表。字典是Python中的一种无序、可变、有键的数据结构。它是一个键-值对的集合,每个键都唯一且不可变,与每个键关联的值可以是任何数据类型(包括整数、字符串、列表、甚至其他字典)。字典使用大括号 {} 来创建,每个键值对用冒号 : 分隔,键和值之间用逗号 , 分隔。
字典表支持的数据类型:
name='正正' #字符串str
age=18 #整数Int
height=1.74 #浮点型float
is_yes=True #布尔bool
pets=['狗','猫','鱼'] #列表list
work_cities=('北京','上海') #元组Tuple
teacher={'姓名':'正正',} #字典Dict
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)作为键
二、字典表声明
方法一:空值声明
dict_1=dict() print(dict_1)
方法二:空值创建
dict_2={} #推荐
print(dict_2)
方法三:非空值创建
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。
字典表的语法规则:
dict_3={'姓名':'mike','年龄':20,'城市':'北京'}
键值之间 冒号:分割 键值对(item)之间的分割使用逗号
字典表中加入元组或者列表
dict_3={'姓名':'mike','年龄':20,'城市':'北京'}
dict_4={'姓名':('mike','Tim'),'城市':['北京','上海']}
print(dict_4['姓名'])
print(dict_4['城市'])
('mike', 'Tim')
['北京', '上海']
注意列表、元组[]、()外,不要加引号否则会转成字符串
三、字典表基本操作
3.1、增加字典表的值
info={'姓名':'张三','年龄':20,'性别':'男'}
# 增加数据
info['城市']='上海' #字典名[键]=添加的值
print(info['城市'])
如果键值不存在,则为增加数据;如果键值存在,则为修改数据
3.2、修改字典表数据的值
info={'姓名':'张三','年龄':20,'性别':'男'}
# 修改数据
info['年龄']=29 #字典名[键]=修改的值
print(info['年龄'])
3.3、查询获取数据的值
info={'姓名':'张三','年龄':20,'性别':'男'}
# 查询数据
print(info['姓名'])
print(info.get('姓名'))
3.4、删除字典表中的值,清空字典
info={'姓名':'张三','年龄':20,'性别':'男'}
# 删除数据
del info['性别']
info.pop('性别')
info.pop() #会默认从尾开始删除
# 清空字典
info.clear()
3.5、字典表长度
info={'姓名':'张三','年龄':20,'性别':'男'}
# 字典表长度
print(len(info))
3.6、字典表数据类型
info={'姓名':'张三','年龄':20,'性别':'男'}
# 字典表类型
print(type(info))
3.7、基于列表创建字典
keys=['姓名','年龄','祖籍','身高']
new_dict=dict.fromkeys(keys) #可以设置值,否则默认为None
print(new_dict) #输出为{'姓名': None, '年龄': None, '祖籍': None, '身高': None}
3.8、基于键查询包含关系
dict_1={'姓名': None, '年龄': None, '祖籍': None, '身高': None}
print('年龄' in new_dict)
3.9、返回字典里的键值对
info={'姓名': '张三', '年龄': 20, '性别': '男', '城市': '上海'}
for k,v in info.items():
print(k,v)
在for循环使用,字典.items()返回一个键key,值value的可迭代对象
3.10、返回字典里的键、值
info={'姓名': '张三', '年龄': 20, '性别': '男', '城市': '上海'}
print(info.keys())
print(info.values())
字典.keys() 返回当前字典包含所有键的可迭代对象,类似items
字典.values()返回当前字典包含所有值的可迭代对象,类似items
3.11 字典的合并
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不存在则添加
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 综合实例
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 数据的组成,字典和列表的结合
#用列表和字典搭建一个简单的数据结构
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['姓名'])

浙公网安备 33010602011771号