python采用字典统计各科目的分数之和及试卷数
时间: 2023-08-31 10:36:36 浏览: 136
### 回答1:
假设有一个包含学生成绩的列表 `scores`,每个元素为一个字典,包含学生的姓名、数学成绩、英语成绩和语文成绩,如下所示:
```
scores = [{'name': '张三', 'math': 80, 'english': 90, 'chinese': 70},
{'name': '李四', 'math': 75, 'english': 85, 'chinese': 80},
{'name': '王五', 'math': 90, 'english': 80, 'chinese': 85},
{'name': '赵六', 'math': 85, 'english': 90, 'chinese': 75}]
```
可以使用一个字典来统计各科目的分数之和及试卷数,代码如下:
```python
# 初始化字典
result = {'math': {'sum': 0, 'count': 0},
'english': {'sum': 0, 'count': 0},
'chinese': {'sum': 0, 'count': 0}}
# 遍历列表,统计各科目的分数之和及试卷数
for item in scores:
result['math']['sum'] += item['math']
result['math']['count'] += 1
result['english']['sum'] += item['english']
result['english']['count'] += 1
result['chinese']['sum'] += item['chinese']
result['chinese']['count'] += 1
# 输出结果
print(result)
```
运行结果如下:
```
{'math': {'sum': 330, 'count': 4}, 'english': {'sum': 345, 'count': 4}, 'chinese': {'sum': 310, 'count': 4}}
```
其中,`result` 字典的键为各科目的名称,值为一个字典,包含两个键值对:`sum` 表示该科目的分数之和,`count` 表示该科目的试卷数。
### 回答2:
Python采用字典来统计各科目的分数之和及试卷数,可以通过以下步骤实现:
1. 创建一个空字典,用于存储科目名称和对应的分数之和及试卷数。
2. 遍历每一份试卷的分数数据。
3. 获取当前试卷的科目名称和分数。
4. 检查字典中是否已经存在该科目名称的键。如果不存在,则向字典中添加一个新的键值对,键为科目名称,值为一个列表,第一个元素为当前分数,第二个元素为1(表示试卷数)。
5. 如果字典中已经存在该科目名称的键,则将当前分数累加到值的第一个元素上,并将第二个元素(试卷数)加1。
6. 遍历结束后,即可得到每个科目的分数之和及试卷数。
7. 可以根据需要使用print函数输出结果。
以下是一个示例代码:
```python
# 创建一个空字典用于存储科目名称和对应的分数之和及试卷数
score_dict = {}
# 模拟多份试卷的分数数据
score_data = [
{"subject": "语文", "score": 85},
{"subject": "数学", "score": 92},
{"subject": "英语", "score": 78},
{"subject": "语文", "score": 90},
{"subject": "数学", "score": 88},
{"subject": "英语", "score": 84},
{"subject": "英语", "score": 79}
]
# 遍历每一份试卷的分数数据
for data in score_data:
# 获取当前试卷的科目名称和分数
subject = data["subject"]
score = data["score"]
# 检查字典中是否已经存在该科目名称的键
if subject not in score_dict:
# 若不存在,则向字典中添加一个新的键值对
score_dict[subject] = [score, 1]
else:
# 若存在,则将当前分数累加到值的第一个元素上,并将第二个元素(试卷数)加1
score_dict[subject][0] += score
score_dict[subject][1] += 1
# 输出每个科目的分数之和及试卷数
for subject, score_info in score_dict.items():
print(subject, ":")
print("分数之和:", score_info[0])
print("试卷数:", score_info[1])
print()
```
以上代码将输出每个科目的分数之和及试卷数。例如,根据示例数据,输出如下:
```
语文 :
分数之和: 175
试卷数: 2
数学 :
分数之和: 180
试卷数: 2
英语 :
分数之和: 241
试卷数: 3
```
这表明在给定的示例数据中,语文科目共有2份试卷,分数之和为175;数学科目共有2份试卷,分数之和为180;英语科目共有3份试卷,分数之和为241。
阅读全文