现有一个数据库记录文件(见附件0005_1.txt),保存了学生课程签到的数据库记录。 内容格式如下 ,
(‘2017-03-13 11:50:09’, 271, 131),
(‘2017-03-14 10:52:19’, 273, 131),
(‘2017-03-13 11:50:19’, 271, 126),
每一行记录保存了学生的一次签到信息。
每一次签到信息的记录,分为三个部分, 分别是签到时间、签到课程的id号、签到学生的id号
要求大家实现下面的函数。其中参数fileName为数据库记录文件路径,
输出结果是将数据库记录文件中的学生签到信息保存在一个字典对象中,并作为返回值返回。
def putInfoToDict(fileName):
要求返回的字典对象的格式是这样的:
key(各个学生的id号
value(该学生的签到信息)
其中value,里面保存着该学生所有签到的信息,其中每个签到的信息是字典对象,有两个元素:
key是lessonid的记录课程id,key是checkintime的记录签到时间
比如,对于上面的示例中的3条记录,相应的返回结果如下:
题目分析:
- 观察需求,需要将给出的内容分别提出学生id,课程id,签到时间
- 目标内容为字典形式,key为学生id,Value为课程id和签到时间组成的列表
- 可以写一个函数,按照key值进行新增或更新Value值,而更新Value值是可用到列表的追加
- 最后写一个循环遍历给出的内容,并调用函数,将数据写入字典中
import pprint
def putInfoToDict(fileName):
dict1 = {}
with open (fileName,'r+',encoding='UTF-8') as f1:
info_list = f1.read().split('\n')
for one in info_list:
one = one.strip('\t').strip(' ').strip(',').strip('(').strip(')')
time,lessonId,stuId = one.split(',')
time = time.strip(' ').strip("\'")
lessonId = int(lessonId.strip(' '))
stuId = int(stuId.strip(' '))
if stuId not in dict1.keys(): # 如果不存在,则定义空列表
dict1[stuId]=[]
dict1[stuId].append({'lessonid': lessonId, 'checkintime': time})
return dict1
pprint.pprint(putInfoToDict('D:/0005_1.txt'))
执行结果:
{126: [{'checkintime': '2017-03-13 11:50:19', 'lessonid': 271}],
131: [{'checkintime': '2017-03-13 11:50:09', 'lessonid': 271},
{'checkintime': '2017-03-14 10:52:19', 'lessonid': 273}]}