logo

该视频仅会员有权观看

立即开通课程「Python 入门」权限。

¥
199
/ 年

字典是 Python 中一种非常常用的数据结构,用于存储键值对(key-value)。每个键与一个值相关联,类似于现实生活中的字典,每个单词(键)对应一个解释(值),而且字典是无序的集合,可以存储任意类型的数据,但需要注意键必须是唯一的,值可以重复。

类比:

  • 电话簿:你可以通过名字(键)找到相应的电话号码(值)。
  • 学生成绩表:每个学生的名字(键)对应他们的成绩(值)。

示例:

# 创建一个包含学生成绩的字典 grades = {"Alice": 85, "Bob": 90, "Charlie": 78} print(grades) # 输出: {'Alice': 85, 'Bob': 90, 'Charlie': 78}

字典的特性和操作:

  • 键必须唯一:每个键在字典中是唯一的。
  • 键必须是不可变类型:通常是字符串、数字、元组。
  • 值可以是任意类型:可以是数字、字符串、列表、甚至是另一个字典。

下面是一些常见的字典操作:

# 访问字典中的值 print(grades["Alice"]) # 输出: 85 # 修改字典中的值 grades["Bob"] = 95 print(grades) # 输出: {'Alice': 85, 'Bob': 95, 'Charlie': 78} # 可以通过键访问字典中的值,也可以通过键修改对应的值。 # ---------------------- # # 添加新的键值对 grades["David"] = 88 print(grades) # 输出: {'Alice': 85, 'Bob': 95, 'Charlie': 78, 'David': 88} # 删除键值对 del grades["Charlie"] print(grades) # 输出: {'Alice': 85, 'Bob': 95, 'David': 88} # 可以通过赋值添加新的键值对,通过 del 关键字删除键值对。 # ---------------------- # # 字典提供了一些有用的方法来操作键值对 # 获取所有键 print(grades.keys()) # 输出: dict_keys(['Alice', 'Bob', 'David']) # 获取所有值 print(grades.values()) # 输出: dict_values([85, 95, 88]) # 获取所有键值对 print(grades.items()) # 输出: dict_items([('Alice', 85), ('Bob', 95), ('David', 88)]) # 检查是否存在键 print("Alice" in grades) # 输出: True # 获取键对应的值,如果键不存在返回默认值 print(grades.get("Eve", "Not Found")) # 输出: Not Found

除了这些基本操作之外,有时候我们还需要对字典进行迭代、排序等操作。我们可以使用 keys()values()items() 方法遍历字典。

# 遍历键 for name in grades: print(name) # 遍历值 for score in grades.values(): print(score) # 遍历键值对 for name, score in grades.items(): print(f"{name} 的成绩是 {score}")

虽然字典本身无序,但可以根据键或值对字典进行排序,我们可以使用 sorted() 函数对字典进行排序,并将结果转为新的字典。

# 根据键排序 sorted_by_keys = dict(sorted(grades.items())) print(sorted_by_keys) # 输出: {'Alice': 85, 'Bob': 95, 'David': 88} # 根据值排序 sorted_by_values = dict(sorted(grades.items(), key=lambda item: item[1])) print(sorted_by_values) # 输出: {'Alice': 85, 'David': 88, 'Bob': 95}

字典在实际编程中非常有用,特别是当你需要快速查找和关联信息时。比如我们可以使用字典来存储学生的成绩,然后根据学生的名字查找对应的成绩,如下所示:

# 学生成绩管理系统 students = { "Alice": {"数学": 85, "英语": 78}, "Bob": {"数学": 90, "英语": 88}, "Charlie": {"数学": 78, "英语": 82} } # 获取 Alice 的数学成绩 print(students["Alice"]["数学"]) # 输出: 85 # 添加学生 David students["David"] = {"数学": 92, "英语": 85} print(students)

注意这里我们还使用了字典嵌套字典的方式,这种方式可以用于更复杂的数据结构,比如管理多个学生和他们的成绩。

在更多的时候我们还可以使用字典来存储配置信息、用户信息、API 响应等,比如下面的例子中我们使用字典来存储数据库和 API 的配置信息,然后在程序中访问使用这些配置即可。

# 配置管理 config = { "database": { "host": "localhost", "port": 5432, "user": "admin", "password": "secret" }, "api": { "endpoint": "https://api.example.com", "token": "abc123" } } # 访问数据库配置 print(config["database"]["host"]) # 输出: localhost # 修改 API 配置 config["api"]["token"] = "def456" print(config)

上面的例子中我们使用字典来存储配置信息,这种方式可以帮助我们更好的管理和组织程序中的配置,当然我们还可以将这些配置信息存储在文件中,然后读取到字典中使用,这样可以让程序更加灵活和易于维护。