Python 列表嵌套字典
概述
Python 列表是一种可变数据类型,其中每个元素可以是任何 Python 数据类型,包括其他列表或字典。因此,列表嵌套字典也是可行的。
在此文章中,我们将探讨如何创建和处理列表嵌套字典,以及如何访问和修改列表中的字典元素。
创建列表嵌套字典
创建一个包含几个字典的列表非常容易。我们可以像这样创建一个包含两个字典的列表。
my_list = [{'name': 'Jack', 'age': 28}, {'name': 'Jane', 'age': 32}]
这样就创建了一个名为 my_list
的列表,其中包含两个字典。我们可以在列表中添加更多字典,也可以使用循环来动态地创建列表。
employees = []
employee = {'name': 'Jack', 'age': 28, 'position': 'Developer'}
employees.append(employee)
employee = {'name': 'Jane', 'age': 32, 'position': 'Manager'}
employees.append(employee)
employee = {'name': 'Bob', 'age': 45, 'position': 'CEO'}
employees.append(employee)
print(employees)
这段代码创建了名为 employees
的空列表,然后往其中添加了三个字典。最后一行代码输出完整的列表到控制台。
访问和修改列表中的字典元素
访问和修改列表中的字典元素也很容易。我们可以使用列表和字典的下标操作符来访问和修改元素。
my_list = [{'name': 'Jack', 'age': 28}, {'name': 'Jane', 'age': 32}]
# 访问第一个字典的 name 属性
print(my_list[0]['name'])
# 修改第二个字典的 age 属性
my_list[1]['age'] = 33
print(my_list[1]['age'])
第一个 print
语句输出了 Jack
,也就是第一个字典的 name 属性。第二个语句将第二个字典的 age 属性修改为 33,然后输出修改后的值。
列表和字典的嵌套和循环
字典和列表的组合可以创建非常复杂的数据结构。例如,我们可以创建一个字典,其中每个键对应一个列表。每个列表中包含一个或多个字典,如下所示。
people = {
'engineers': [
{'name': 'John', 'age': 28},
{'name': 'Jane', 'age': 32},
{'name': 'Bob', 'age': 45}
],
'salespeople': [
{'name': 'Jack', 'age': 39},
{'name': 'Jill', 'age': 33}
]
}
# 循环访问所有人的名字和年龄
for group, people in people.items():
print(f"{group}:")
for person in people:
print(f"{person['name']}, {person['age']}")
在这段代码中,我们创建了一个名为 people
的字典。这个字典包含两个键,每个键都对应一个列表,其中包含若干个字典。我们可以使用两个嵌套的 for 循环来遍历整个数据结构,这样可以输出每个人的名字和年龄。
另一个例子:学生成绩单
让我们来看一个更复杂的例子:学生成绩单。假设我们需要记录一群学生的成绩信息。每个学生有一个唯一的 ID,以及多个科目的成绩。我们可以用一个字典来表示学生的信息,其中 ID 和成绩分别表示为键和值。
我们可以用一个列表来保存所有的学生信息。
students = [
{'id': '001', 'name': 'Jack', 'scores': {'math': 78, 'english': 85, 'computer': 92}},
{'id': '002', 'name': 'Jane', 'scores': {'math': 62, 'english': 79, 'computer': 88}},
{'id': '003', 'name': 'Bob', 'scores': {'math': 98, 'english': 90, 'computer': 94}},
{'id': '004', 'name': 'Alice', 'scores': {'math': 85, 'english': 92, 'computer': 89}}
]
# 计算每个学生的平均分数
for student in students:
scores = student['scores']
total_score = sum(scores.values())
avg_score = total_score / len(scores)
print(f"{student['name']} (ID: {student['id']}), average score: {avg_score:.2f}")
在这段代码中,我们创建了一个名为 students
的列表,其中包含四个字典。每个字典表示一个学生的信息,包括 ID、姓名和成绩。成绩信息又表示为一个字典,其中包含数学、英语和计算机科学三个键值对。
我们可以使用一个 for 循环来遍历所有学生的信息。对于每个学生,我们可以使用字典下标操作符来访问其 ID、姓名和成绩。然后,我们可以使用字典的 values() 方法获取该学生的所有成绩值,然后使用内置的 sum() 函数计算总分。最后,我们可以通过将总分除以成绩的数量来计算平均成绩,并将其打印到控制台上。
结论
Python 列表嵌套字典是一种方便且常用的数据结构。它允许我们创建复杂的数据结构,以及轻松地表示高维数据。通过本文的介绍,我们学习了如何创建、访问和修改列表嵌套字典,以及如何使用嵌套的列表和字典进行循环。在实际编程中,列表嵌套字典经常用于表示关系型数据,例如数据库表中的记录。熟练掌握这种数据结构,将会使我们的程序更加灵活和高效。