完整代码
分段解析:
运行结果
使用items()函数以列表返回可遍历的(键,值)元组数组,将字典中的键值对以元组存储,并将众元组存在列表中。(人话:就是将所需数值从字典中提取出来,并以元组的形式存在列表中),这里是将形成的键值对存在sv中
由于课程是多门,因此新字典scores(开头定义过了)的值v需要以列表的方式,保存各门课程的成绩,所以在不是的情况下,新字典scores的值v是利用append(it[1])的方式,追加到列表的后面;对v做append操作,必须要事先定义v是一个空列表;因此需要在对每一条旧字典stud的键值对信息做处理的for it in sv:语句之前,用v = []初始化v为一个空列表;所以接下来是给新字典scores添加一条键值对,scores[k] = v
人话:现在对sv里的元组进行遍历,先检索it[0]=’sid’:因为我们后续需要根据sid进行排序。
在检索到sid以后利用k=it[1]将sid后的数值提取出来,用k接收。else如果没有检索到sid则使用v.append(it[1])将后面的课程分取出形成一个列表放在v中,在遍历完成后,使用scores[k]=v将刚在提出的数据存放在字典scores里
下面就是scores里目前存放的数据
接下来我们需要对提取出的数据进行排序
题目要求按学号从小到大的顺序输出学号和成绩,所以需要对字典的键值对内容items()提取到列表so里,到这里就变成了下面的形式
接下来使用sort()函数进行排序操作
Key=lambda x:x[0]这里表示以键的数据进行排序lambda x:x[0] , lambda为匿名函数(作为临时使用的小函数)表示将列表中的序列从0开始,排序依据用x[0]里的数值,也就是sid的数值(101,102,103),reverse=False表示升序排序,Ture为降序,变成如下形式
现在需要按照题目要求输出,对so进行遍历,将元组提取出来即可
就ok了