从网页上复制下来的班级名册串,请编程将名册串中的姓名摘取出来形成一个姓名列表,统计并显示班上各个姓氏(不考虑复姓)出现的次数并按次数从大到小显示。
时间: 2024-02-17 11:02:02 浏览: 166
好的,我可以帮你解决这个问题!我可以使用 Python 编程语言来实现,以下是代码:
```python
roster = "张三,李四,王五,张三,赵六,李四,刘七"
# 将名册串转换为姓名列表
name_list = roster.split(",")
print("姓名列表:", name_list)
# 统计姓氏出现的次数
surname_count = {}
for name in name_list:
surname = name[0]
if surname not in surname_count:
surname_count[surname] = 1
else:
surname_count[surname] += 1
# 按次数从大到小显示姓氏
sorted_surname_count = sorted(surname_count.items(), key=lambda x: x[1], reverse=True)
print("姓氏出现次数:")
for surname, count in sorted_surname_count:
print(surname, count)
```
运行结果如下:
```
姓名列表: ['张三', '李四', '王五', '张三', '赵六', '李四', '刘七']
姓氏出现次数:
张 2
李 2
王 1
赵 1
刘 1
```
代码解释:
1. 首先,我们将名册串转换为一个姓名列表,使用 `split()` 函数将字符串按逗号分隔成一个列表。
2. 接着,我们使用一个字典 `surname_count` 来统计每个姓氏出现的次数。对于每个姓名,我们取出其第一个字作为姓氏,判断该姓氏是否已经在字典中出现过,如果没有,就将其出现次数初始化为 1,否则将其出现次数加 1。
3. 最后,我们按照姓氏出现次数从大到小排序,并输出结果。使用 `sorted()` 函数可以对字典按照值排序,使用 `key` 参数指定按照值排序,使用 `reverse=True` 参数将结果按照从大到小的顺序排序。最后,使用 `items()` 方法将字典转换为二元组列表,方便后面遍历输出。
阅读全文