关任务:编写一个能计算文档《中学诗词.txt》中各位作者作品数量的程序。 遍历文档中每一行,提取作者的姓名,将其作为键加入到字典中,字典的值为作品数量。 然后将字典转换为二维列表,按作品数量的降序排列。(这一步的代码已完成,无需修改)
时间: 2024-12-20 18:24:05 浏览: 7
为了编写这个程序,你需要按照以下步骤操作:
1. **打开文件**:
使用Python的内置`open()`函数读取文件《中学诗词.txt》,确保以文本模式(`'r'`)打开。
```python
with open('中学诗词.txt', 'r') as file:
lines = file.readlines()
```
2. **遍历并解析行数据**:
对于文件的每一行,需要检查是否包含作者信息。通常,每行可能由作者名、诗句组成,你可以尝试分割行来获取作者名。如果作者名在特定位置,比如总是文件的第一部分,可以简单地切分;如果不确定,可能需要正则表达式或其他方法。
```python
authors_count = {}
for line in lines:
# 假设作者名在每行的开头,我们可以用split()分离出作者名
author_name = line.split(":")[0].strip()
if author_name not in authors_count:
authors_count[author_name] = 1
else:
authors_count[author_name] += 1
```
3. **统计作品数量**:
现在字典`authors_count`存储了每个作者的作品数量。
4. **排序字典**:
将字典转换为二维列表,并按照作品数量降序排列。可以先创建一个元组列表,然后使用`sorted()`函数配合`lambda`表达式完成此操作。
```python
# 先转成列表以便排序
author_list = list(authors_count.items())
# 按照值(作品数量)降序排序
sorted_authors = sorted(author_list, key=lambda x: x[1], reverse=True)
```
5. **输出结果**:
最终的二维列表`sorted_authors`包含了作者及其对应的作品数量,可以打印出来,也可以保存到新的文件中。
```python
print(sorted_authors)
```
完整的代码如下:
```python
with open('中学诗词.txt', 'r') as file:
lines = file.readlines()
authors_count = {}
for line in lines:
author_name = line.split(":")[0].strip()
authors_count[author_name] = authors_count.get(author_name, 0) + 1
sorted_authors = sorted(authors_count.items(), key=lambda x: x[1], reverse=True)
print(sorted_authors)
```
阅读全文