将字典中的语⽂、数学成绩保存到⼀个列表中,对成绩进⾏分组聚合:”统计不同分数出现的个数(以字典形式),不 同分数中对应的众数“
时间: 2024-09-21 12:02:00 浏览: 82
当你有一个包含学生姓名和他们的语文、数学成绩的字典列表,你可以通过Python的内置数据结构和函数来实现这个需求。首先,你需要将所有成绩提取出来并整理成一个单独的数据结构,比如列表或元组。然后可以使用`collections`模块中的`Counter`来统计每个分数的出现次数,并计算众数。
以下是一个示例步骤:
1. 创建一个字典列表,例如:
```python
scores = [
{"name": "张三", "math": 85, "chinese": 90},
{"name": "李四", "math": 92, "chinese": 88},
{"name": "王五", "math": 85, "chinese": 92},
]
```
2. 提取成绩并转换为列表:
```python
all_scores = [student["math"] for student in scores]
all_chineses = [student["chinese"] for student in scores]
```
3. 使用`Counter`计算每个分数的出现次数:
```python
from collections import Counter
math_counts = Counter(all_scores)
chinese_counts = Counter(all_chineses)
```
4. 计算众数(如果有多个众数,Python `Counter`返回的是一个集合,需进一步处理):
```python
def calculate_mode(numbers):
count_dict = dict(Counter(numbers))
max_count = max(count_dict.values())
return {num: count for num, count in count_dict.items() if count == max_count}
math_mode = calculate_mode(all_scores)
chinese_mode = calculate_mode(all_chineses)
```
现在,`math_counts`和`chinese_counts`分别是数学和语文成绩的计数字典,`math_mode`和`chinese_mode`则是对应的成绩众数。
阅读全文