Logo
Section 1 / 16

字典

在本章中,我们将学习使用 Python 字典。

导入

字典

在本章中,我们将学习使用 Python 字典。

字典

字典是一种数据结构,通过给定的键(key-value对)来索引值。

字典使用花括号 {} 表示,包含键和对应的值。

创建字典的一般语法如下:

1DictionaryName = { 2 key1: value1, 3 key2: value2, 4 . 5 . 6 . 7 keyN: valueN, 8}

字典中的每个键必须是唯一的,以确保对于某个键能准确返回对应的值;但字典本身不保持顺序。字典的实用性在于,我们为每个值分配一个键,而不是像列表那样使用数值索引。

以下是一个名为 Student 的字典的可视化示例,其中键是学生姓名,值是学生年龄。

...

创建并打印字典

下面的例子展示了一个根据姓名索引学生年龄的字典。

1ages = { 2 "Peter": 10, 3 "Isabel": 11, 4 "Anna": 9, 5 "Thomas": 10, 6 "Bob": 10, 7 "Joseph": 11, 8 "Maria": 12, 9 "Gabriel": 10, 10} 11# 打印单个元素 12print("获取 Peter 的年龄") 13print(ages["Peter"]) 14 15# 打印整个字典 16print("获取所有人的年龄") 17for key, value in ages.items(): 18 print(key, value)

使用 dict 关键字调用无参数的字典构造函数:

1new_dict = dict()

或者直接写字典名后跟等号 = 和 {}:

1new_dict = {}
1ages = dict() 2ages['Peter'] = 12 3ages['Susan'] = 13 4for key, value in ages.items(): 5 print(key, value)

注意: 键的插入顺序在控制台输出时不会被保留,每次运行代码时顺序可能不同。

你可以创建一个有序字典,以保持键插入时的顺序。这需要从 collections 库中导入 OrderedDict,并调用 OrderedDict() 内置方法。

  1. from collections import OrderedDict
  2. dictionary_name = OrderedDict()
1from collections import OrderedDict 2 3ages = OrderedDict() 4 5ages['Peter'] = 12 6ages['Susan'] = 10 7ages['Maria'] = 5 8 9for key, value in ages.items(): 10 print(key, value)

访问字典中的项

然而,字典的键可以是不可变对象,并不一定非要是字符串。

1d = { 2 0: [0, 0, 0], 3 1: [1, 1, 1], 4 2: [2, 2, 2], 5} 6 7print(d[2])

遍历字典

使用 for 循环,我们可以遍历字典。

遍历获取所有键

要获取字典中的所有键,使用以下语法:

📝 注意:字典的输出顺序不一定与保存时一致。

1ages = { 2 "Peter": 10, 3 "Isabel": 11, 4 "Anna": 9, 5 "Thomas": 10, 6 "Bob": 10, 7 "Joseph": 11, 8 "Maria": 12, 9 "Gabriel": 10, 10} 11 12for x in ages: 13 print(x)

遍历获取所有值

要获取字典中的所有值,使用以下语法:

1ages = { 2 "Peter": 10, 3 "Isabel": 11, 4 "Anna": 9, 5 "Thomas": 10, 6 "Bob": 10, 7 "Joseph": 11, 8 "Maria": 12, 9 "Gabriel": 10, 10} 11 12for x in ages: 13 print(ages[x])

另一种返回字典值的方法是使用 values() 函数:

1ages = { 2 "Peter": 10, 3 "Isabel": 11, 4 "Anna": 9, 5 "Thomas": 10, 6 "Bob": 10, 7 "Joseph": 11, 8 "Maria": 12, 9 "Gabriel": 10, 10} 11 12for x in ages.values(): 13 print(x)

遍历同时获取键和值

可以使用 items() 方法遍历字典的内容,如下所示:

1ages = { 2 "Peter": 10, 3 "Isabel": 11, 4 "Anna": 9, 5 "Thomas": 10, 6 "Bob": 10, 7 "Joseph": 11, 8 "Maria": 12, 9 "Gabriel": 10, 10} 11 12for name, age in ages.items(): 13 print(name, age)

嵌套字典

字典可以嵌套在另一个字典中,也可以将其他字典作为值使用。

...

以下 Python 代码演示了嵌套字典的概念。

1students = { 2 "Peter": {"age": 10, "address": "Lisbon"}, 3 "Isabel": {"age": 11, "address": "Sesimbra"}, 4 "Anna": {"age": 9, "address": "Lisbon"}, 5} 6print(students) 7print(students['Peter']) 8print(students['Peter']['address'])

遍历嵌套字典

可以使用嵌套的 for 循环来遍历嵌套字典。

1students = { 2 "Peter": {"age": 10, "address": "Lisbon"}, 3 "Isabel": {"age": 11, "address": "Sesimbra"}, 4 "Anna": {"age": 9, "address": "Lisbon"}, 5} 6 7for p_id, p_info in students.items(): 8 print("\n人员姓名:", p_id) 9 for key in p_info: 10 print(key + ':', p_info[key])

这种方法非常适合组织层次化信息。

现在关于 Python 中“字典”的概念已经清晰,接下来请完成练习题来检验你的掌握程度,然后再进入下一章——“类”。

迭代与循环

挑战 1:确定字典的大小