# 二维列表(表格/矩阵)
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 三维列表(立体数据/多张表)
cube = [[[1,2],[3,4]], [[5,6],[7,8]]]
# 树结构(用嵌套字典/列表表示)
tree = {'value': 1, 'children': [{'value': 2}, {'value': 3}]}
# JSON数据(本质是嵌套字典和列表)
# 嵌套列表
scores = [[90, 85], [88, 92], [75, 80]]
print(scores[1][0]) # 88
# 嵌套字典
students = {
'Alice': {'math': 90, 'eng': 85},
'Bob': {'math': 88, 'eng': 92}
}
print(students['Bob']['eng']) # 92
# 列表中嵌套字典
users = [
{'name': 'Alice', 'age': 20},
{'name': 'Bob', 'age': 21}
]
print(users[0]['name']) # Alice
结构[外层][内层]
# 修改嵌套元素
scores[0][1] = 95
students['Alice']['math'] = 100
# 插入新元素
scores.append([82, 88])
students['Tom'] = {'math': 80, 'eng': 78}
# 删除元素
del students['Bob']['eng']
import copy
lst = [[1,2],[3,4]]
shallow = lst.copy()
deep = copy.deepcopy(lst)
shallow[0][0] = 99
print(lst) # [[99, 2], [3, 4]]
print(deep) # [[1, 2], [3, 4]]
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i, row in enumerate(matrix):
for j, item in enumerate(row):
print(f"matrix[{i}][{j}] = {item}")
students = {
'Alice': {'math': 90, 'eng': 85},
'Bob': {'math': 88, 'eng': 92}
}
for name, subjects in students.items():
for subject, score in subjects.items():
print(f"{name} {subject}: {score}")
# 递归打印任意层嵌套列表
def print_nested(lst, level=0):
for item in lst:
if isinstance(item, list):
print_nested(item, level+1)
else:
print(' '*level + str(item))
print_nested([1, [2, [3, 4]], 5])
# flatten: 将多层嵌套列表拉平成一维
def flatten(lst):
result = []
for item in lst:
if isinstance(item, list):
result.extend(flatten(item))
else:
result.append(item)
return result
print(flatten([1, [2, [3, 4]], 5])) # [1, 2, 3, 4, 5]
# 统计每个学生的平均分
students = {
'Alice': {'math': 90, 'eng': 85, 'cs': 95},
'Bob': {'math': 88, 'eng': 92, 'cs': 80}
}
for name, subjects in students.items():
avg = sum(subjects.values()) / len(subjects)
print(f"{name} 平均分: {avg:.2f}")
# 用嵌套字典/列表表示树结构
menu = [
{'name': '文件', 'children': [
{'name': '新建'}, {'name': '打开'}
]},
{'name': '编辑', 'children': [
{'name': '复制'}, {'name': '粘贴'}
]}
]
def print_menu(menu, level=0):
for item in menu:
print(' '*level + item['name'])
if 'children' in item:
print_menu(item['children'], level+1)
print_menu(menu)
import json
# 嵌套结构转JSON
books = [
{'title': 'Python入门', 'author': '张三', 'price': 59.9},
{'title': '数据结构', 'author': '李四', 'price': 69.0}
]
json_str = json.dumps(books, ensure_ascii=False, indent=2)
print(json_str)
# JSON转嵌套结构
books2 = json.loads(json_str)
print(books2)
# 查找所有价格大于60的书
expensive_books = [book for book in books if book['price'] > 60]
print(expensive_books)
IndexError
或 KeyError
# 防御式访问嵌套字典
def get_score(students, name, subject):
return students.get(name, {}).get(subject, None)
print(get_score(students, 'Alice', 'math')) # 90
print(get_score(students, 'Tom', 'math')) # None
# defaultdict自动嵌套字典
from collections import defaultdict
def tree():
return defaultdict(tree)
data = tree()
data['a']['b']['c'] = 1
print(dict(data))
# pprint美观打印嵌套结构
from pprint import pprint
pprint(students)
def print_tree(data, level=0):
if isinstance(data, dict):
for k, v in data.items():
print(' '*level + str(k))
print_tree(v, level+1)
elif isinstance(data, list):
for item in data:
print_tree(item, level+1)
else:
print(' '*level + str(data))
print_tree(students)
print(json.dumps(students, ensure_ascii=False, indent=2))
实现一个工具,支持输入多个学生的多门课程成绩,统计每个学生的平均分、最高分、最低分,并能按课程统计全班平均分。
实现一个图书管理系统,支持添加、查询、删除图书,按作者、价格等条件筛选,并支持数据的保存与加载(JSON)。
编写一个程序,将嵌套数据结构以树状结构打印出来,便于观察数据层级关系。
实现一个递归函数,统计嵌套结构中所有数字的和(支持任意层嵌套)。