用python实现统计一下内容,有一个txt文件内容包括三行:日期(例如11.12)+“到教室前三名:”后接三位同学名字+“缺勤:”后接所有缺勤同学的姓名。姓名均用逗号隔开,txt文件记录每天的对应内容,中间用空行隔开。需要用python统计在前三位到教室名单次数最多的三名同学以及缺勤次数最多的三名同学,给出详细的python代码可以吗
时间: 2023-02-09 07:12:41 浏览: 161
你好!我可以为你提供如下的 Python 代码:
```
# 首先打开文件并读取内容
with open('文件名.txt', 'r') as f:
lines = f.readlines()
# 初始化统计字典
count_dict = {}
# 循环每一行
for line in lines:
# 去除前后空格
line = line.strip()
# 忽略空行
if not line:
continue
# 如果第一个字符是数字,那么这一行是日期
if line[0].isdigit():
date = line
# 如果是“到教室前三名”
elif line.startswith('到教室前三名'):
# 取出名字
names = line.split(':')[1].split(',')
# 将名字加入统计字典
for name in names:
if name in count_dict:
count_dict[name]['arrival'] += 1
else:
count_dict[name] = {'arrival': 1, 'absence': 0}
# 如果是“缺勤”
elif line.startswith('缺勤'):
# 取出名字
names = line.split(':')[1].split(',')
# 将名字加入统计字典
for name in names:
if name in count_dict:
count_dict[name]['absence'] += 1
else:
count_dict[name] = {'arrival': 0, 'absence': 1}
# 将统计字典按照到教室次数排序
arrival_sorted = sorted(count_dict.items(), key=lambda x: x[1]['arrival'], reverse=True)
# 取出前三名
top_3_arrival = arrival_sorted[:3]
print('前三名到教室名单:')
for name, count in top_3_arrival:
print(f'{name}: {count["arrival"]}')
# 将统计字典按照缺勤次数排序
absence_sorted = sorted(count_dict.items(), key=lambda x: x[1]['absence'], reverse
阅读全文