Python 中的嵌套字典指的是作为另一个字典的值存储的字典。换句话说,一个字典可以包含其他字典作为其值,形成一个层次或嵌套的结构。
嵌套字典可以像普通字典一样被修改、更新或扩展。可以在嵌套结构的任何级别添加、移除或更新键值对。
在 Python 中创建嵌套字典
我们可以通过定义一个字典来创建嵌套字典,其中某些键的值本身是字典。这允许创建一个层级结构,其中每个键值对代表一层嵌套的信息。这可以通过几种方式实现:
示例:直接赋值
在这种方法中,我们可以在单个字典定义中直接将字典作为值分配给外层键。
nested_dict = {
"outer_key1": {"inner_key1": "value1", "inner_key2": "value2"},
"outer_key2": {"inner_key3": "value3", "inner_key4": "value4"}
}
print(nested_dict)
示例:使用循环
通过这种方法,初始化一个空的外层字典,然后使用循环填充字典作为值以定义嵌套字典。
nested_dict = {}
outer_keys = ["outer_key1", "outer_key2"]
for key in outer_keys:
nested_dict[key] = {"inner_key1": "value1", "inner_key2": "value2"}
print(nested_dict)
在 Python 中向嵌套字典添加条目
一旦创建了嵌套字典,我们就可以通过使用其键访问特定的嵌套字典,然后为它分配一个新的键值对来添加条目。
示例
在下面的例子中,我们定义了一个嵌套字典 "students",其中每个键代表一个学生的姓名,其值是另一个包含学生详细信息的字典。
然后,我们在 Alice 的嵌套字典中添加一个新的键值对,并为新学生 Charlie 添加一个新的嵌套字典。
students = {
"Alice": {"age": 21, "major": "Computer Science"},
"Bob": {"age": 20, "major": "Engineering"}
}
students["Alice"]["GPA"] = 3.8
students["Charlie"] = {"age": 22, "major": "Mathematics"}
print(students)
上述代码的输出如下:
{'Alice': {'age': 21, 'major': 'Computer Science', 'GPA': 3.8}, 'Bob': {'age': 20, 'major': 'Engineering'}, 'Charlie': {'age': 22, 'major': 'Mathematics'}}
在 Python 中访问嵌套字典的条目
在 Python 中访问嵌套字典的条目是指通过一系列的键来检索存储在嵌套结构中的值。每个键对应于字典层级中的一个级别。
我们可以通过直接索引使用方括号或使用 get() 方法来实现这一点。
示例:使用直接索引
在这种方法中,我们通过在一系列方括号中指定每个键来访问嵌套字典中的值。序列中的每个键指的是嵌套字典中的一个级别,并随着每个键的深入而进入下一级别。
students = {
"Alice": {"age": 21, "major": "Computer Science"},
"Bob": {"age": 20, "major": "Engineering"},
"Charlie": {"age": 22, "major": "Mathematics"}
}
alice_major = students["Alice"]["major"]
print("Alice's major:", alice_major)
bob_age = students["Bob"]["age"]
print("Bob's age:", bob_age)
上述代码的输出如下:
Alice's major: Computer Science
Bob's age: 20
示例:使用 get() 方法
get() 方法用于获取与指定键相关联的值。如果键不存在,则返回默认值(如果不指定则为 None)。
students = {
"Alice": {"age": 21, "major": "Computer Science"},
"Bob": {"age": 20, "major": "Engineering"},
"Charlie": {"age": 22, "major": "Mathematics"}
}
alice_major = students.get("Alice", {}).get("major", "Not Found")
print("Alice's major:", alice_major)
dave_major = students.get("Dave", {}).get("major", "Not Found")
print("Dave's major:", dave_major)
上述代码的输出如下:
Alice's major: Computer Science
Dave's major: Not Found
从嵌套字典中删除字典
我们可以使用 del 关键字从嵌套字典中删除字典。这个关键字允许我们从嵌套字典中移除特定的键值对。
示例
在下面的例子中,我们使用 del 语句从 "students" 字典中删除 Bob 的嵌套字典。
students = {
"Alice": {"age": 21, "major": "Computer Science"},
"Bob": {"age": 20, "major": "Engineering"},
"Charlie": {"age": 22, "major": "Mathematics"}
}
del students["Bob"]
print(students)
上述代码的输出如下:
{'Alice': {'age': 21, 'major': 'Computer Science'}, 'Charlie': {'age': 22, 'major': 'Mathematics'}}
在 Python 中遍历嵌套字典
遍历嵌套字典是指循环遍历字典每一层的键和值。这使你能够访问和操作嵌套结构中的条目。
我们可以通过使用嵌套循环来遍历嵌套字典。外层循环遍历主字典的键和值,而内层循环遍历嵌套字典的键和值。
示例
在这个例子中,我们通过遍历嵌套字典来获取 "students" 字典中每个学生的姓名及其对应的信息。
students = {
"Alice": {"age": 21, "major": "Computer Science"},
"Bob": {"age": 20, "major": "Engineering"},
"Charlie": {"age": 22, "major": "Mathematics"}
}
for student, details in students.items():
print(f"Student: {student}")
for key, value in details.items():
print(f" {key}: {value}")
上述代码的输出如下:
Student: Alice
age: 21
major: Computer Science
Student: Bob
age: 20
major: Engineering
Student: Charlie
age: 22
major: Mathematics