设计一个数据结构,存储班级中所有同学的本学期五门课程的成绩信息 , 包含三个元素,分别是学号,姓名,成绩。 设计出该结构进行存储,为了简化,学号为1100, 学号为1的同学姓名为 “A1”, 学号为30的同学姓名为”A30”,每个同学每门课程的成绩均为随机生成的一个60100之间的随机数。
(1)当结构为dic = {1:[“A1”,[60,60,60,60,60 ]]}时,【不使用序列化方法】
①把如上数据写入名字为score.txt的文件中。以字符串形式写入。
②读出score.txt文件中的内容到内存中,并使用循环对读出的字典进行控制台输出。
(2)当结构为[ {1:{ “A1”:[ 60,60,60,60,60]} }, {2:{“A2”:[ 60,60,60,60,60]} }……] 【不使用序列化方法】
①把如上数据写入名字为score.txt的文件中。以字符串形式写入。
②读出score.txt文件中的内容到内存中,并使用循环对读出的内容进行控制台输出。
③使用序列化的方法,分别把(1)和(2)的内容写入文件,然后再从文件中读出。
import random
class Score:
def __init__(self, score_dic):
self.score_dic = score_dic
# 定义一个函数,用于将嵌套字典写入文件中
def write_score_file(score_dic, filename):
with open(filename, 'w') as f:
for key, value in score_dic.items():
f.write(f"{key}:{value}\n")
# 定义一个函数,用于从文件中读取嵌套字典
def read_score_file(filename):
with open(filename) as f:
score_dic = {}
for line in f:
key, value = line.strip().split(':')[:2]
score_dic[key] = value.split(',')
return score_dic
# 定义一个函数,用于将嵌套字典转换为列表
def to_list(score_dic):
return [score[1] for score in score_dic.values()]
# 定义一个函数,用于将嵌套字典转换为字典列表
def to_dict_list(score_dic):
return [score_dic[key] for key in score_dic]
# 测试代码
score_dic = {1: {'A1': [60, 60, 60, 60, 60]}, 2: {'A2': [60, 60, 60, 60, 60]}, 3: {'A3': [60, 60, 60, 60, 60]}}
write_score_file(score_dic, 'score.txt')
score_dic_list = read_score_file('score.txt')
for score_dic in score_dic_list:
print(score_dic)
# 将嵌套字典写入文件
with open('score.txt', 'w') as f:
for score_dic in score_dic_list:
f.write(f"{score_dic['1']}:{score_dic['A1']}\n")
f.write("\n")
# 从文件中读取嵌套字典
score_dic_list = read_score_file('score.txt')
for score_dic in score_dic_list:
print(score_dic)