1. 什么是字典
在Python中, 字典
是一系列 键—值
对 。每个 键
都与一个 值
相关联,你可以使用 键
来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
在Python中,字典用放在 花括号{}
中的一系列 键—值
对表示,
示例:
student = {
'name': '张三',
'college': '计算机学院',
'class': '计算机1601'
}
print(student)
键—值
对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用 冒号 分隔,而 键—值
对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。
2. 字典的增删改查
2.1 查:字典访问
要获取与键相关联的值,可依次指定字典名和放在方括号内的键。
示例:
student = {
'name': '张三',
'college': '计算机学院',
'class': '计算机1601'
}
print(student['name'])
示例输出:
张三
2.2 增:添加键—值对
字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。
可以在已有数据的字典中添加新的键—值对。
示例:
student = {
'name': '张三',
'college': '计算机学院',
'class': '计算机1601'
}
print(student)
student['no'] = '202010870101'
print(student)
示例输出:
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601'}
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601', 'no': '202010870101'}
也可以通过创建空的字典,然后再添加数据的形式增加键值对。
示例:
student = {}
student['name'] = '张三'
student['college'] = '计算机学院'
student['class'] = '计算机1601'
print(student)
示例输出:
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601'}
2.3 改:修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。
示例:
student = {
'name': '张三',
'college': '计算机学院',
'class': '计算机1601'
}
print(student)
student['name'] = '李四'
student['class'] = '物联网1601'
print(student)
示例输出:
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601'}
{'name': '李四', 'college': '计算机学院', 'class': '物联网1601'}
2.4 删:删除键—值对
对于字典中不再需要的信息,可使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。
示例:
student = {
'name': '张三',
'college': '计算机学院',
'class': '计算机1601',
'phone': '18808089999'
}
print(student)
del student['phone']
print(student)
示例输出:
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601', 'phone': '18808089999'}
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601'}
3. 遍历字典
一个Python字典可能只包含几个键—值对,也可能包含数百万个键—值对。鉴于字典可能包含大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息,因此有多种遍历字典的方式:可遍历字典的所有键—值对、键或值。
3.1 遍历所有的键—值对
示例:遍历所有的键—值对
student = {
'name': '张三',
'college': '计算机学院',
'class': '计算机1601',
'phone': '18808089999'
}
print(student)
for key, value in student.items():
print(key + '\t:' + value)
示例输出:
{'name': '张三', 'college': '计算机学院', 'class': '计算机1601', 'phone': '18808089999'}
name :张三
college :计算机学院
class :计算机1601
phone :18808089999
3.2 遍历所有的键
示例:遍历所有的键
teacher_course = {
'张老师': '数据结构',
'李老师': '算法设计与分析',
'王老师': '数据库系统概论',
'赵老师': '数值分析'
}
print(teacher_course)
for teacher in teacher_course.keys():
print(teacher)
示例输出:
{'张老师': '数据结构', '李老师': '算法设计与分析', '王老师': '数据库系统概论', '赵老师': '数值分析'}
张老师
李老师
王老师
赵老师
3.3 遍历所有的值
示例:遍历所有的值
teacher_course = {
'张老师': '数据结构',
'李老师': '算法设计与分析',
'王老师': '数据库系统概论',
'赵老师': '数值分析'
}
print(teacher_course)
for course in teacher_course.values():
print(course)
示例输出:
{'张老师': '数据结构', '李老师': '算法设计与分析', '王老师': '数据库系统概论', '赵老师': '数值分析'}
数据结构
算法设计与分析
数据库系统概论
数值分析
3.4 遍历时操作
在遍历字典的时候,还可以对字典进行相应操作后再进行遍历。
- 可以排序后输出。即对键或者值进行排序后输出。
teacher_course = {
'zhang': '数据结构',
'li': '算法设计与分析',
'wang': '数据库系统概论',
'zhao': '数值分析'
}
print(teacher_course)
for teacher in sorted(teacher_course.keys()):
print(teacher)
示例输出:
{'zhang': '数据结构', 'li': '算法设计与分析', 'wang': '数据库系统概论', 'zhao': '数值分析'}
li
wang
zhang
zhao
- 可以去重后输出。即如果涉及到的数据量较多,而且有重复的选项,可以剔除重复项。集合(set) 类似于列表,但每个元素都必须是独一无二的:
示例:
teacher_course = {
'张老师': '数据结构',
'李老师': '算法设计与分析',
'王老师': '数据结构',
'赵老师': '数值分析'
}
print(teacher_course)
for course in set(teacher_course.values()):
print(course)
示例输出:
{'张老师': '数据结构', '李老师': '算法设计与分析', '王老师': '数据结构', '赵老师': '数值分析'}
数据结构
数值分析
算法设计与分析
- 判断某个键或者值是否存在。
示例:
teacher_course = {
'张老师': '数据结构',
'李老师': '算法设计与分析',
'王老师': '数据结构',
'赵老师': '数值分析'
}
print(teacher_course)
if '数据库系统' not in teacher_course.keys():
print('课程中没有数据库系统')
if '王老师' not in teacher_course.keys():
print('没有王老师')
else:
print('有王老师')
示例输出:
{'张老师': '数据结构', '李老师': '算法设计与分析', '王老师': '数据结构', '赵老师': '数值分析'}
课程中没有数据库系统
有王老师
4. 嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套 。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
4.1 列表中存储字典
示例:
student_0 = {'name': '张三', 'class': '计算机1601'}
student_1 = {'name': '李四', 'class': '计算机1602'}
student_2 = {'name': '王五', 'class': '计算机1603'}
student_3 = {'name': '赵六', 'class': '计算机1604'}
students = [student_0, student_1, student_2, student_3]
print(students)
print(len(students))
for student in students:
print(student)
示例输出:
[{'name': '张三', 'class': '计算机1601'}, {'name': '李四', 'class': '计算机1602'}, {'name': '王五', 'class': '计算机1603'}, {'name': '赵六', 'class': '计算机1604'}]
4
{'name': '张三', 'class': '计算机1601'}
{'name': '李四', 'class': '计算机1602'}
{'name': '王五', 'class': '计算机1603'}
{'name': '赵六', 'class': '计算机1604'}
4.2 字典中存储列表
示例:
school = {
'name': '武汉理工大学',
'college': ['材料学院', '化生学院', '计算机学院']
}
print(school)
print(school['college'])
for college in school['college']:
print(college)
示例输出:
{'name': '武汉理工大学', 'college': ['材料学院', '化生学院', '计算机学院']}
['材料学院', '化生学院', '计算机学院']
材料学院
化生学院
计算机学院
示例:
classes = {
'计算机1601': ['张三', '李四', '王五'],
'计算机1602': ['赵六', '田七'],
'计算机1603': ['孙八', '周十一'],
'计算机1604': ['吴十二', '郑十三', '冯宝宝']
}
for the_class, student_names in classes.items():
print(the_class + '的学生有:')
for student_name in student_names:
print('\t' + student_name)
示例输出:
计算机1601的学生有:
张三
李四
王五
计算机1602的学生有:
赵六
田七
计算机1603的学生有:
孙八
周十一
计算机1604的学生有:
吴十二
郑十三
冯宝宝
4.3 字典中存储字典
示例:
students = {
'张三': {
'no': '1001',
'phone': '18763336333',
'city': '武汉市'
},
'李四': {
'no': '1002',
'phone': '18812345678',
'city': '北京市'
},
'王五': {
'no': '1003',
'phone': '18998765432',
'city': '南京市'
}
}
print(students)
for name, info in students.items():
print(name + '的信息如下:')
print('\t学号为:' + info['no'] + ',手机号是:' + info['phone'] + ',居住在' + info['city'])
示例输出:
{'张三': {'no': '1001', 'phone': '18763336333', 'city': '武汉市'}, '李四': {'no': '1002', 'phone': '18812345678', 'city': '北京市'}, '王五': {'no': '1003', 'phone': '18998765432', 'city': '南京市'}}
张三的信息如下:
学号为:1001,手机号是:18763336333,居住在武汉市
李四的信息如下:
学号为:1002,手机号是:18812345678,居住在北京市
王五的信息如下:
学号为:1003,手机号是:18998765432,居住在南京市
参考文献:
[1] Python编程:从入门到实践