自学内容网 自学内容网

如何统计字符串中单词出现的次数

如何统计字符串中单词出现的次数

在编程中,统计字符串中每个单词出现的次数是一个非常常见的问题。今天我们将通过一个 Python 示例来演示如何实现这一功能。我们将用到 Python 的 map 函数和 reduce 函数来完成任务。

示例代码

假设我们有如下字符串:

str1 = "hello world java javaScript html css hello css java javaScript world python python html"

我们的目标是统计每个单词在这个字符串中出现的次数。

步骤 1:拆分字符串为单词序列

首先,我们使用 split() 方法将字符串拆分成单词列表:

lst = str1.split(' ')
print(lst)

输出的单词列表是:

['hello', 'world', 'java', 'javaScript', 'html', 'css', 'hello', 'css', 'java', 'javaScript', 'world', 'python', 'python', 'html']

步骤 2:使用 map 函数为每个单词计数

接下来,我们使用 map 函数来为每个单词计数。map 会对列表中的每个单词应用 lambda 函数,将每个单词映射为字典形式 {单词: 1}:

map_lst = list(map(lambda item: {item: 1}, lst))
print(map_lst)

输出的结果是:

[{'hello': 1}, {'world': 1}, {'java': 1}, {'javaScript': 1}, {'html': 1}, {'css': 1}, {'hello': 1}, {'css': 1}, {'java': 1}, {'javaScript': 1}, {'world': 1}, {'python': 1}, {'python': 1}, {'html': 1}]

每个单词被表示为字典,值为 1。

步骤 3:使用 reduce 函数叠加计数

接下来,我们需要将这些字典合并成一个最终的统计结果。我们使用 reduce 函数来实现这个过程。reduce 会依次将两个字典合并,并将同一单词的计数值叠加。

首先,定义一个叠加函数:

def f(dict0, dict1):
    key = list(dict1.items())[0][0]  # 获取dict1的key
    value = list(dict1.items())[0][1]  # 获取dict1的value

    # 将同一单词的计数累加
    dict0[key] = dict0.get(key, 0) + value
    return dict0

然后,我们使用 reduce 函数来合并所有字典:

from functools import reduce

result = reduce(f, map_lst)
print(result)

输出结果是:

{'hello': 2, 'world': 2, 'java': 2, 'javaScript': 2, 'html': 2, 'css': 2, 'python': 2}

步骤 4:综合使用 map 和 reduce

我们也可以将 map 和 reduce 结合在一行中直接实现:

result = reduce(f, map(lambda item: {item: 1}, str1.split(' ')))
print(result)

输出结果与上面相同:

{'hello': 2, 'world': 2, 'java': 2, 'javaScript': 2, 'html': 2, 'css': 2, 'python': 2}

总结

通过使用 Python 中的 map 和 reduce 函数,我们可以轻松地统计字符串中每个单词的出现次数。主要步骤包括:

使用 split() 方法将字符串拆分为单词列表。
使用 map 函数将每个单词转化为字典 {单词: 1}。
使用 reduce 函数将所有字典合并并叠加同一单词的计数值。
这种方法简洁且高效,适用于大部分统计单词出现次数的场景。


创作不易,如果这篇博客对你有帮助,劳烦三连!如果有任何问题,欢迎在评论区提问。

原文地址:https://blog.csdn.net/m0_56026872/article/details/145310068

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!