#假设有一个存放学生学号和语数英三门功课成绩的列表studs如下:
studs= [{'sid':'103', 'Chinese': 90, 'Math':95, 'English':92},{'sid':'101', 'Chinese': 80, 'Math':85, 'English':82}, {'sid':'102', 'Chinese': 70, 'Math':75, 'English':72}]。编写程序,将列表studs的数据内容提取出来,放到一个字典scores中,在屏幕上按学号从小到大的顺序显示输出所有学生的学号及语数英三门功课的成绩
我现在已经编到了新的字典里,但是不知道怎么重新排序
studs= [{'sid':'103', 'Chinese': 90, 'Math':95, 'English':92},{'sid':'101', 'Chinese': 80, 'Math':85, 'English':82}, {'sid':'102', 'Chinese': 70, 'Math':75, 'English':72}];
dict={};
list=[];
in_key=""
a=[];
score={}
for it in studs:
for chi in it.keys():
if chi!="sid":
list.append(it[chi]);
else:
in_key=it[chi];
a.append(it[chi]);
dict[in_key]=list;
list=[]
studs = [{'sid': '103', 'Chinese': 90, 'Math': 95, 'English': 92},
{'sid': '101', 'Chinese': 80, 'Math': 85, 'English': 82},
{'sid': '102', 'Chinese': 70, 'Math': 75, 'English': 72}]
# 这一句是字典解析式
# {key: value for xxx in xxx}
scores = {stud['sid']: [stud['Chinese'], stud['Math'], stud['English']] for stud in studs}
# 这一句是列表解析式
# [item for xxx in xxx]
sids = [int(sid) for sid in scores]
# 按学号排序
sids.sort()
# 遍历每个学号
for sid in sids:
# 获取对应分数
score = scores[str(sid)]
# 输出
print(f'sid:{sid} Chinese:{score[0]} Math:{score[1]} English:{score[2]}')