Python - 嵌套字典
你好,有抱负的程序员!今天,我们将深入探讨 Python 中的嵌套字典这一神奇世界。如果你是编程新手,不用担心 - 我会一步一步地引导你学习这个主题,就像我这么多年来为无数学生做的那样。所以,拿上你最喜欢的饮料,放松一下,让我们一起踏上这个 Python 冒险之旅吧!
嵌套字典
嵌套字典是什么?
想象你有一个大盒子(主字典),在这个大盒子里,你有几个小盒子(嵌套字典)。每个小盒子都可以包含各种物品(键值对)。本质上,嵌套字典就是一个字典里面嵌套了另一个字典。
让我们从一个简单的例子开始:
student = {
"name": "Alice",
"age": 20,
"grades": {
"math": 95,
"science": 88,
"history": 92
}
}
在这个例子中,student
是我们的主字典。它包含了关于 Alice 的基本信息,包括一个嵌套字典 grades
,它保存了她不同科目的成绩。
在 Python 中创建嵌套字典
创建嵌套字典与创建普通字典类似,但你需要添加另一个字典作为值。让我们创建一个更复杂的例子 - 学校目录:
school = {
"九年级": {
"Alice": {
"age": 14,
"subjects": ["数学", "科学", "英语"]
},
"Bob": {
"age": 15,
"subjects": ["历史", "艺术", "体育"]
}
},
"十年级": {
"Charlie": {
"age": 16,
"subjects": ["物理", "化学", "生物"]
}
}
}
这里,我们有一个主字典 school
,它包含年级作为键。每个年级是另一个包含学生姓名作为键的字典。每个学生都有自己的包含个人信息的字典。
在 Python 中向嵌套字典中添加项目
向嵌套字典中添加项目很简单。你可以向现有的嵌套字典中添加新的键值对,或者创建全新的嵌套字典。
让我们向十年级添加一个新学生:
school["十年级"]["Diana"] = {
"age": 15,
"subjects": ["数学", "计算机科学", "文学"]
}
print(school["十年级"])
输出:
{
'Charlie': {'age': 16, 'subjects': ['物理', '化学', '生物']},
'Diana': {'age': 15, 'subjects': ['数学', '计算机科学', '文学']}
}
我们也可以添加一个新的年级:
school["十一年级"] = {
"Eve": {
"age": 17,
"subjects": ["经济学", "心理学", "法语"]
}
}
print(school.keys())
输出:
dict_keys(['九年级', '十年级', '十一年级'])
在 Python 中访问嵌套字典的项目
要访问嵌套字典中的项目,我们使用多个方括号,每个方括号代表一个嵌套级别。让我们从我们的 school
字典中获取一些信息:
# 获取 Alice 的年龄
alice_age = school["九年级"]["Alice"]["age"]
print(f"Alice 的年龄:{alice_age}")
# 获取 Charlie 的科目
charlie_subjects = school["十年级"]["Charlie"]["subjects"]
print(f"Charlie 的科目:{charlie_subjects}")
输出:
Alice 的年龄:14
Charlie 的科目:['物理', '化学', '生物']
记住,如果你不确定你的嵌套字典的结构,你可以总是使用 get()
方法来避免 KeyError 异常:
# 尝试获取一个不存在的学生
frank_age = school.get("九年级", {}).get("Frank", {}).get("age", "未找到")
print(f"Frank 的年龄:{frank_age}")
输出:
Frank 的年龄:未找到
从嵌套字典中删除字典
要移除嵌套字典,我们使用 del
关键字。让我们从九年级中删除 Bob:
del school["九年级"]["Bob"]
print(school["九年级"])
输出:
{'Alice': {'age': 14, 'subjects': ['数学', '科学', '英语']}}
在从嵌套字典中删除项目时要注意。始终确保键存在,以避免 KeyError 异常。
在 Python 中遍历嵌套字典
遍历嵌套字典需要嵌套循环。让我们打印出我们的 school
字典中的所有信息:
for grade, students in school.items():
print(f"\n{grade}:")
for student, info in students.items():
print(f" {student}:")
for key, value in info.items():
print(f" {key}:{value}")
输出:
九年级:
Alice:
age:14
subjects:['数学', '科学', '英语']
十年级:
Charlie:
age:16
subjects:['物理', '化学', '生物']
Diana:
age:15
subjects:['数学', '计算机科学', '文学']
十一年级:
Eve:
age:17
subjects:['经济学', '心理学', '法语']
这个嵌套循环结构允许我们访问和打印出我们嵌套字典的所有层级。
用于处理嵌套字典的方法
以下是用于处理嵌套字典的一些有用方法的表格:
方法 | 描述 |
---|---|
dict.items() |
返回一个包含字典键值对的视图对象 |
dict.keys() |
返回一个包含字典键的视图对象 |
dict.values() |
返回一个包含字典值的视图对象 |
dict.get(key, default) |
如果存在指定的键,则返回该键的值,否则返回默认值 |
dict.update(other_dict) |
用来自另一个字典或键值对可迭代对象的元素更新字典 |
dict.pop(key, default) |
删除并返回指定键的值。如果键不存在,则返回默认值 |
请记住,这些方法可以应用于嵌套字典的任何层级。
你已经掌握了,我亲爱的学生们!我们已经探讨了 Python 中嵌套字典的方方面面。从创建和添加项目到访问、删除和遍历,你现在拥有了处理这些复杂数据结构的工具。
就像任何编程概念一样,实践是关键。尝试创建自己的嵌套字典,比如数字图书馆目录或食谱书。你与这些结构玩得越多,你就越能适应。
记住,在编程世界中,错误只是学习的机会。所以,不要害怕实验和犯错 - 这就是我们所有人作为程序员成长的方式。继续编码,继续学习,最重要的是,享受 Python 带来的乐趣!
Credits: Image by storyset