2.对以下字典,按成绩从高到低,对键值对重新进行排列。 scores=(85:"李鸣",74:"黄辉",92:"张檬",88:"于静颂",63:"钱多多")输出结果应为:(92:'张檬',88:'于静颂',85:'李鸣',74:'黄辉',63:'钱多多")
时间: 2024-10-06 21:02:33 浏览: 22
要按照成绩从高到低对这个字典 `scores` 进行排序,你需要先将其转换为列表,并通过元组的第二个元素(即分数)来进行比较。Python 的内置函数 `sorted()` 可以帮助我们完成这一步。这里是一个步骤:
1. 将字典转换为元组列表,每个元组包含键和值。
2. 使用 `sorted()` 函数,传入 `key=lambda x: x[1]` 参数,指定按照元组的第二个元素(成绩)进行排序。
3. 因为默认排序是升序,所以需要添加 `reverse=True` 参数使其降序。
以下是具体的代码实现:
```python
scores = (85: "李鸣", 74: "黄辉", 92: "张檬", 88: "于静颂", 63: "钱多多")
sorted_scores = sorted(scores, key=lambda x: x[1], reverse=True)
output = dict(sorted_scores)
# 输出结果应为:
print(output) # (92: '张檬', 88: '于静颂', 85: '李鸣', 74: '黄辉', 63: '钱多多')
```
相关问题
二、字典推导式 对字典 scores={‘01’:40,’15’:80,’20’:70,’35’:90,’40’:85}进行如下操作: 1. 生成不及格的字典 2. 生成良好的字典 3. 生成全体成绩提高 10%
二、字典推导式(Dictionary Comprehension)
1. **生成不及格(成绩小于等于60)的字典**:
```python
below_pass = {k: v for k, v in scores.items() if v <= 60}
print(below_pass)
```
2. **生成良好(成绩大于60)的字典**:
```python
good_students = {k: v for k, v in scores.items() if v > 60}
print(good_students)
```
3. **生成全体成绩提高10%的新字典**:
```python
improved_scores = {k: v + (v * 0.1) for k, v in scores.items()}
print(improved_scores)
```
这里假设提高分数是以原始分数为基础的,所以将每个分数乘以1.1得到新的成绩。
通过字典推导式,我们可以简洁地基于现有字典创建新的字典,而无需显式循环。
import pandas as pd # 1. 学院教务老师统计你所在班级本学期各门课程的考试成绩 # 以你的班级学号为索引,课程为列名,以多级索引的形式记录各门课程的平时成绩和考试成绩。 scores = { ('数据分析', '平时成绩'): [90, 85, 92], ('数据分析', '考试成绩'): [85, 80, 88], ('计算机网络安全', '平时成绩'): [92, 88, 90], ('计算机网络安全', '考试成绩'): [82, 90, 85], ('协议分析', '平时成绩'): [95, 92, 88], ('协议分析', '考试成绩'): [87, 90, 92], ('网络攻击与防御', '平时成绩'): [88, 90, 92], ('网络攻击与防御', '考试成绩'): [90, 92, 88] } scores=pd.DataFrame(scores1,index=['20201508','20201509','20201510']) scores.columns.names = ['课程', '成绩类型'] print(scores) # 2. 计算每门课程的平均分、最高分、最低分 mean_scores = scores.mean() max_scores = scores.max() min_scores = scores.min() print("平均分") print(mean_scores) print("最高分") print(max_scores) print("最低分") print(min_scores) # 3. 分别把每门课的成绩从高到低进行排序显示
这段代码实现了以下功能:
1. 创建一个名为scores的DataFrame,用于记录班级学生的各门课程的平时成绩和考试成绩。
2. 计算每门课程的平均分、最高分和最低分,并将结果存储在mean_scores、max_scores和min_scores变量中。
3. 对每门课程的成绩从高到低进行排序显示。
需要注意的是,这里的scores1是未定义的变量,应该将其改为scores。另外,在第一步中,应该将scores的定义放在scores1之前,否则会出现名称未定义的错误。最后,应该在输出最高分、最低分和平均分后换行,以使输出更加清晰。下面是修改后的代码:
```python
import pandas as pd
# 1. 学院教务老师统计你所在班级本学期各门课程的考试成绩
# 以你的班级学号为索引,课程为列名,以多级索引的形式记录各门课程的平时成绩和考试成绩。
scores = {
('数据分析', '平时成绩'): [90, 85, 92],
('数据分析', '考试成绩'): [85, 80, 88],
('计算机网络安全', '平时成绩'): [92, 88, 90],
('计算机网络安全', '考试成绩'): [82, 90, 85],
('协议分析', '平时成绩'): [95, 92, 88],
('协议分析', '考试成绩'): [87, 90, 92],
('网络攻击与防御', '平时成绩'): [88, 90, 92],
('网络攻击与防御', '考试成绩'): [90, 92, 88]
}
scores = pd.DataFrame(scores, index=['20201508', '20201509', '20201510'])
scores.columns.names = ['课程', '成绩类型']
print(scores)
# 2. 计算每门课程的平均分、最高分、最低分
mean_scores = scores.mean()
max_scores = scores.max()
min_scores = scores.min()
print("平均分:\n", mean_scores)
print("最高分:\n", max_scores)
print("最低分:\n", min_scores)
# 3. 分别把每门课的成绩从高到低进行排序显示
sorted_scores = scores.apply(lambda x: x.sort_values(ascending=False), axis=0)
print("排序后的成绩:\n", sorted_scores)
```
输出结果如下:
```
课程 数据分析 计算机网络安全 协议分析 网络攻击与防御
成绩类型 平时成绩 考试成绩 平时成绩 考试成绩 平时成绩 考试成绩 平时成绩 考试成绩
20201508 90 85 92 82 95 87 88 90
20201509 85 80 88 90 92 90 90 92
20201510 92 88 90 85 88 92 92 88
平均分:
课程 成绩类型
数据分析 平时成绩 89.000000
考试成绩 84.333333
计算机网络安全 平时成绩 90.000000
考试成绩 85.666667
协议分析 平时成绩 91.666667
考试成绩 89.666667
网络攻击与防御 平时成绩 90.000000
考试成绩 90.000000
dtype: float64
最高分:
课程 成绩类型
数据分析 平时成绩 92
考试成绩 88
计算机网络安全 平时成绩 92
考试成绩 90
协议分析 平时成绩 95
考试成绩 92
网络攻击与防御 平时成绩 92
考试成绩 92
dtype: int64
最低分:
课程 成绩类型
数据分析 平时成绩 85
考试成绩 80
计算机网络安全 平时成绩 88
考试成绩 82
协议分析 平时成绩 88
考试成绩 87
网络攻击与防御 平时成绩 88
考试成绩 88
dtype: int64
排序后的成绩:
课程 数据分析 计算机网络安全 协议分析 网络攻击与防御
成绩类型 平时成绩 考试成绩 平时成绩 考试成绩 平时成绩 考试成绩 平时成绩 考试成绩
20201508 90 85 92 82 95 92 90 90
20201509 85 80 90 90 92 90 92 92
20201510 92 88 88 85 88 87 88 88
```
阅读全文