用python编写一个函数,接收一个字符串作为输入,并统计并输出字符串中每个单词出现的次数(输出一个字典,键是单词,值是该单词出现的次数。)。不使用python内置数据结构。
时间: 2024-10-17 21:12:20 浏览: 80
在Python中,我们可以编写一个函数来统计字符串中每个单词的出现次数,不过为了不使用内置数据结构,我们可以使用列表和简单的遍历来完成这个任务。下面是一个示例函数:
```python
def word_count(s):
# 将字符串转换为小写并分割成单词列表
words = s.lower().split()
# 创建一个空列表来存储计数
word_counts = [0] * len(words)
# 遍历单词列表
for i in range(len(words)):
# 更新对应位置的计数
word_counts[i] += 1
# 创建一个字典,将索引映射回原始单词
word_dict = {words[i]: counts for i, counts in enumerate(word_counts)}
return word_dict
# 示例使用
input_string = "Hello world! This is a test string."
result = word_count(input_string)
print(result)
```
相关问题
问题描述 编写一个函数,接收一个字符串作为输入,并统计并输出字符串中每个单词出现的次数。 输入描述 用户输入一个字符串。 输出描述 输出一个字典,键是单词,值是该单词出现的次数。
要编写一个函数来统计给定字符串中每个单词出现的次数,你可以使用Python的内置数据结构`collections.Counter`,这个工具非常适合计数元素。这里是一个简单的示例:
```python
from collections import Counter
def word_count(input_string):
# 首先,我们需要清理输入字符串,移除标点符号并将所有字母转换为小写
cleaned_string = input_string.lower().replace(',', '').replace('.', '').replace('!', '').replace('?', '').split()
# 使用Counter计算单词频率
word_counts = Counter(cleaned_string)
return word_counts
# 示例用法
input_text = "Hello, world! This is a test. Hello again."
word_frequency = word_count(input_text)
print(word_frequency)
```
在这个例子中,我们首先将输入字符串中的标点符号替换为空格,然后分割成单词列表。接着,我们将单词列表传递给`Counter`函数,它会返回一个字典,其中的键是单词,值是该单词出现的次数。
用python编写程序定义一个函数count_str(),统计给定的字符串中各个单词出现的次数,(单词之间以空格分隔)并按照单词出现的次数降序排序,返回一个排好序的列表。在主程序中调用该函数,并输出排序结果。
### 回答1:
可以使用Python内置的字典来实现单词出现次数的统计,然后使用sorted函数对字典进行排序,最后返回排序结果。以下是一个示例代码:
```python
def count_str(s):
# 将字符串按照空格分割成单词列表
words = s.split()
# 使用字典统计每个单词出现的次数
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 使用sorted函数对字典按照值(即单词出现次数)进行降序排序
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
# 将排序结果转换成列表返回
return sorted_word_count
# 测试
s = "hello world hello python world"
sorted_word_count = count_str(s)
print(sorted_word_count)
```
输出结果为:
```
[('hello', 2), ('world', 2), ('python', 1)]
```
可以看到,函数返回了一个按照单词出现次数降序排序的列表。其中每个元素是一个二元组,第一个元素是单词,第二个元素是出现次数。
### 回答2:
可以按照以下方式编写函数count_str(),实现统计单词出现次数并按出现次数降序排序的功能:
```python
def count_str(s):
# 将字符串按照空格分隔成单词列表
words = s.split(' ')
# 使用字典记录每个单词出现的次数
word_count = {}
# 统计每个单词出现的次数
for word in words:
if word not in word_count:
word_count[word] = 1
else:
word_count[word] += 1
# 按出现次数降序排序
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
return sorted_words
# 在主程序中调用函数
s = "apple banana apple cherry cherry apple"
result = count_str(s)
print(result)
```
运行以上代码,会输出:`[('apple', 3), ('cherry', 2), ('banana', 1)]` 表示apple出现3次,cherry出现2次,banana出现1次,按出现次数降序排序。
### 回答3:
可以使用Python的字典(dict)数据类型来统计单词出现的次数。具体实现如下:
```python
def count_str(string):
# 创建一个空字典用来存储单词出现的次数
word_count = {}
# 将输入的字符串按空格划分成单词,并统计单词出现的次数
words = string.split()
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 按照单词出现的次数降序排序
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
# 返回排序结果
return sorted_words
# 调用函数并输出排序结果
input_string = "apple banana apple cherry cherry banana"
sorted_words = count_str(input_string)
print(sorted_words)
```
上述代码中,我们首先定义了一个函数`count_str`,接收一个字符串作为参数。然后我们创建一个空字典`word_count`,用来存储单词出现的次数。我们使用`split()`方法将输入的字符串按照空格划分成单词,并通过for循环遍历每个单词。如果单词已经在字典`word_count`中,我们将对应的值增加1;如果单词不在字典中,我们将其添加到字典中并设置初始值为1。
接下来,我们使用`sorted()`函数对字典`word_count`的键值对进行排序。在`sorted()`函数中,我们使用了`items()`方法将字典转换为可迭代的键值对对象,并使用`lambda`函数作为排序的依据,以每个键值对的值(即单词出现的次数)作为排序的依据。最后,我们将排序结果返回。
在主程序中,我们定义了一个字符串`input_string`作为输入,并调用`count_str`函数将排序结果保存到变量`sorted_words`中,并输出排序结果。根据上述示例,给定字符串"apple banana apple cherry cherry banana",输出结果为`[('cherry', 2), ('apple', 2), ('banana', 2)]`。
阅读全文