python学校高考录取专业的时候要按辅助排序,输入一个字典{"tom": {'history':45,'geolophy':60}, "jack": {'physic':90,'creature':80}},分别代表某同学的两门课分数,课可能不一样。 请计算每个同学的辅助排序分总分,并按分数高低排名输出。 样例输入 {"tom": {'history':45,'geolophy':60}, "jack": {'physic':90,'creature':80}} 样例输出 jack:170 tom:105
时间: 2024-01-04 09:03:20 浏览: 226
可以使用字典推导式来遍历每个同学的成绩,计算总分并存储到一个新的字典中,然后按字典中的值来输出。
代码如下```
scores = {"tom {'history':45,'olophy':60},jack": {'physic':90,'creature':80}}
# 计算每个同学的总分
total_scores = {name: sum(scores[name].values()) for name in scores}
# 按照总分排序输出
for name, total_score in sorted(total_scores.items(), key=lambda x: x[1], reverse=True):
print(name + ':' + str(total_score), end=' ')
```
输出结果为:
```
jack:170 tom:105
```
解释一下代码:
首先,我们使用字典推导式遍历每个同学的成绩,计算总分并存储到一个新的字典 `total_scores` 中。`total_scores` 的键为同学的姓名,值为该同学的总分。
然后,我们使用 `sorted` 函数对 `total_scores` 中的项按照值进行排序,并使用 `lambda` 函数指定排序的键为字典中的值。`reverse=True` 表示按照降序排列。
最后,我们遍历排序后的结果,输出每个同学的姓名和总分。
阅读全文