在教职工信息管理系统中,编写一段统计各系各学历人数的代码,应该如何思考并改进优化代码?
时间: 2024-03-07 08:48:30 浏览: 52
首先,我们需要定义一个教职工信息的数据结构,可以使用类或字典等方式存储每个教职工的信息,包括姓名、所在系别、学历等。
接着,我们可以使用一个字典来统计各系各学历人数,字典的键是系别和学历的组合,值是该组合下的教职工人数。遍历每个教职工的信息,将其所在系别和学历组合成一个键,在字典中查找该键是否存在,若存在则将对应的值加1,若不存在则创建该键并初始化为1。
代码示例:
```python
staff_info = [
{'name': '张三', 'department': '计算机系', 'education': '本科'},
{'name': '李四', 'department': '计算机系', 'education': '研究生'},
{'name': '王五', 'department': '电子系', 'education': '本科'}
]
count_dict = {}
for info in staff_info:
key = info['department'] + info['education']
if key in count_dict:
count_dict[key] += 1
else:
count_dict[key] = 1
print(count_dict)
```
输出结果为:
```
{'计算机系本科': 1, '计算机系研究生': 1, '电子系本科': 1}
```
对于代码的优化,我们可以考虑使用collections模块中的defaultdict来代替普通的字典,这样可以避免键不存在时的判断和初始化操作。代码示例:
```python
import collections
staff_info = [
{'name': '张三', 'department': '计算机系', 'education': '本科'},
{'name': '李四', 'department': '计算机系', 'education': '研究生'},
{'name': '王五', 'department': '电子系', 'education': '本科'}
]
count_dict = collections.defaultdict(int)
for info in staff_info:
key = info['department'] + info['education']
count_dict[key] += 1
print(count_dict)
```
输出结果与前面的示例相同。
阅读全文