Skip to content

嵌套字典:字典里的乾坤

在Python的世界里,字典(dict)是一种非常强大的数据结构,它允许我们使用键值对(key-value pairs)来存储和访问数据。 更令人兴奋的是,字典的值(value)本身也可以是字典,这就构成了嵌套字典。 简单来说,嵌套字典就是“字典里面套字典”。 这种结构特别适合用来表示具有层级关系的数据。

想象一下,你要存储一个班级里所有学生的详细信息。每个学生都有姓名、年龄、以及各科成绩。 使用嵌套字典,你可以轻松地实现:

python
# 班级信息,这是一个字典
class_info = {
    "class_name": "三年二班",
    "students": { # "students" 键对应的值是一个字典,里面存储了所有学生的信息
        "Tom": {  # "Tom" 是一个学生的姓名,对应的值是 Tom 的个人信息字典
            "age": 10,
            "grades": { #  "grades" 键对应的值又是一个字典,存储了 Tom 的各科成绩
                "math": 95,
                "english": 88,
                "science": 92
            }
        },
        "Alice": { # "Alice" 也是一个学生姓名,对应的值是 Alice 的个人信息字典
            "age": 11,
            "grades": {
                "math": 98,
                "english": 95,
                "science": 99
            }
        }
    }
}

# 现在,你可以轻松访问 Tom 的数学成绩:
tom_math_grade = class_info["students"]["Tom"]["grades"]["math"]
print(f"Tom 的数学成绩是: {tom_math_grade}")  # 输出: Tom 的数学成绩是: 95

# 访问 Alice 的年龄
alice_age = class_info["students"]["Alice"]["age"]
print(f"Alice 的年龄是: {alice_age}") # 输出: Alice 的年龄是: 11

为什么使用嵌套字典?

  • 组织复杂数据: 当你的数据包含多个层级的信息时,嵌套字典可以让你更清晰、更有条理地组织数据。
  • 表示关系型数据: 类似于数据库中的表,嵌套字典可以用来表示具有主外键关系的数据。
  • 易于访问: 通过多重键索引,你可以方便地访问嵌套字典中的任何一个值。

嵌套字典的创建与访问

创建嵌套字典就像创建普通字典一样,只不过在赋值的时候,将另一个字典作为值赋给某个键。

python
d = {
    1: {"name": "Amar", "age": 19},
    2: {"name": "Ria", "age": 20},
    3: {"name": "Rao", "age": 18}
}

访问嵌套字典中的元素,需要使用多重键索引。 例如,要访问 d 中键为 2 的字典中 "name" 对应的值,可以这样写:

python
print(d[1])
print(d[2]["name"])

输出

{'name': 'Amar', 'age': 19}
Ria

嵌套字典的应用场景

  • 数据库记录: 每一行记录可以表示为一个嵌套字典,其中主键作为外部字典的键。
  • JSON数据: JSON(JavaScript Object Notation)是一种常用的数据交换格式,它与Python的字典非常相似,经常涉及到嵌套结构。处理JSON数据时,可以使用嵌套字典来存储和操作数据。
  • 配置文件: 程序的配置文件通常包含多个层级的配置项,可以使用嵌套字典来表示。
  • 游戏开发: 游戏中的角色属性、地图信息等可以使用嵌套字典来组织。