编程将名册串中的姓名摘取出来形成一个姓名列表,统计并显示班上各个姓氏(不考虑复姓)出现的次数并按次数从大到小显示。显示格式如下: 5: 王 刘 吴 4: 张 胡
时间: 2024-02-17 18:02:03 浏览: 142
好的,那么我可以给您提供一个 Python 的实现方法。假设名册串是一个纯文本文件,每一行代表一个学生的信息,其中姓名是用空格隔开的名和姓。代码如下:
```python
import re
from collections import defaultdict
# 读取名册串文件,获取所有姓名
names = []
with open("名册串文件路径", "r") as f:
for line in f:
# 使用正则表达式获取姓名
match = re.search(r"(\S+)\s+(\S+)", line)
if match:
names.append(match.group(2))
# 统计各个姓氏出现的次数
surname_count = defaultdict(int)
for name in names:
surname = name[0] # 姓氏就是姓名的第一个字
surname_count[surname] += 1
# 按次数从大到小排序,并输出结果
result = ""
for count, surname in sorted(((v,k) for k,v in surname_count.items()), reverse=True):
result += f"{count}: {surname} "
print(result)
```
这段代码首先读取名册串文件,获取所有姓名,然后统计各个姓氏出现的次数,并按次数从大到小排序。最后将结果输出。
阅读全文