Python 字典包含子字典

引言

在 Python 中,字典是一种非常常用的数据类型,它是一个无序的键值对集合。字典可以存储任意类型的数据,包括字符串、整数、列表等。字典还允许嵌套,即一个字典中的值可以是另一个字典。本文将介绍如何在 Python 中创建和操作包含子字典的字典,并提供一些应用示例。

字典基础

在了解如何创建包含子字典的字典之前,我们先来回顾一下字典的基本知识。

字典是由键值对组成的,其中键是唯一的,用来索引值。可以使用花括号 {} 来创建一个空字典,或者使用大括号内包含逗号分隔的键值对来创建一个非空字典。以下是一个简单的字典示例:

person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

可以通过使用方括号 [] 并提供键来访问字典中的值。例如,person["name"] 将返回字符串 "Alice"

创建字典包含子字典

要创建一个字典包含子字典,只需在键值对中将值设置为另一个字典即可。以下是一个示例:

person = {
    "name": "Alice",
    "age": 25,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "zip": "10001"
    }
}

在这个例子中,person 字典包含一个名为 "address" 的键,其值是另一个字典。这个嵌套的字典表示了人物的地址信息。

访问子字典中的值

要访问字典中子字典的值,可以使用多个方括号。例如,要获取 person 字典中 "address" 字典的 "city" 值,可以使用 person["address"]["city"]。下面是一个完整的示例:

person = {
    "name": "Alice",
    "age": 25,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "zip": "10001"
    }
}

city = person["address"]["city"]
print(city)  # 输出: New York

更新子字典中的值

要更新字典中子字典的值,可以直接使用多个方括号,并将新值赋给相应的键。以下是一个示例:

person = {
    "name": "Alice",
    "age": 25,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "zip": "10001"
    }
}

person["address"]["city"] = "San Francisco"
print(person["address"]["city"])  # 输出: San Francisco

向字典中添加子字典

要向字典中添加子字典,可以直接为新键分配一个字典。以下是一个示例:

person = {
    "name": "Alice",
    "age": 25
}

person["address"] = {
    "street": "123 Main St",
    "city": "New York",
    "zip": "10001"
}

print(person)  # 输出: {'name': 'Alice', 'age': 25, 'address': {'street': '123 Main St', 'city': 'New York', 'zip': '10001'}}

遍历字典包含子字典

要遍历字典中包含子字典的值,可以使用嵌套的 for 循环。以下是一个示例:

person = {
    "name": "Alice",
    "age": 25,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "zip": "10001"
    }
}

for key, value in person.items():
    if isinstance(value, dict):
        for subkey, subvalue in value.items():
            print(subkey, ":", subvalue)
    else:
        print(key, ":", value)

这个示例将遍历 person 字典,如果值