编写程序,输入多行英文句子,对每个单词计数,并保存到字典类型map1中。查看map1的内容。按照单词出现的次数从高到低排序,并查看排序后的结果。提示:因为字典类型无法排序,因此需将其转为列表类型再排序
时间: 2024-09-24 13:20:04 浏览: 48
在Python中,你可以通过以下步骤编写这样的程序:
1. 首先,创建一个空字典 `map1` 来存储单词及其出现的次数。
```python
map1 = {}
```
2. 使用循环遍历每一行用户输入的英文句子。可以使用 `split()` 函数将句子拆分成单词列表,然后逐词处理。
```python
while True:
sentence = input("请输入英文句子(按回车结束):")
if not sentence.strip():
break # 结束输入
words = sentence.split()
for word in words:
# 检查单词是否已经在字典中
if word in map1:
map1[word] += 1
else:
map1[word] = 1
```
3. 转换字典为列表,以便于排序。这里可以使用 `collections.Counter` 对象,它内部就是字典并能方便地统计元素数量,然后使用 `items()` 获取元组列表,其中包含键值对 `(word, count)`。
```python
from collections import Counter
word_counts = list(map1.items())
```
4. 排序列表,可以根据单词出现的次数降序排列。这里我们可以使用 `sorted()` 函数,传入一个自定义的关键字函数 `lambda x: x[1]` 来指定按照第二个元素(计数值)进行排序。
```python
sorted_word_counts = sorted(word_counts, key=lambda x: x[1], reverse=True)
```
5. 最后,打印出原始的字典内容以及排序后的结果。
```python
print("原始字典内容:", map1)
print("排序后的结果:", sorted_word_counts)
```
如果你想要继续运行这个程序,只需删除已经过时的部分(如 `map1` 的初始化),并在适当的地方插入上述代码。记得在实际应用中添加错误处理,比如检查用户输入是否为英文等。
阅读全文