美文网首页
Day049|Python300例之统计字符串各单词频次并排序输

Day049|Python300例之统计字符串各单词频次并排序输

作者: 龙渊的宝藏 | 来源:发表于2021-04-15 00:27 被阅读0次

今天是Andy学Python的第49 天哦! 

大家好,我是Andy。

昨天学习了计算字符串中单词出现的数量,今天继续研究,如何实现字符串中各单词出现频次并排序输出。

01.

项目需求

统计字符串中单词出现频次并排序输出。 

02.

任务拆解

2.1 清洗数据,将字符串中的逗号、句号、问号替换为空格(本节只适用于字符串中最多只有逗号、句号、问号或空格的英文字符串)。

2.2 提取单词,使用split()将字符串分割为单词。

2.3 统计各单词出现次数,建立word空字典,采用字典get()方法,默认值为0,出现一次+1;也可用set()去重,再用count()计数。

2.4 排序输出,按字典中值的大小排序。

03.

代码实现

3.1版本1.0

def count_str_word(s):  # 统计字符串单词频次,参数 s 代表字符串

    a = s.replace(",", " ")  # 将逗号替换为空格

    a = a.replace(".", " ")  # 将句号替换为空格

    a = a.replace("?", " ")  # 将问号替换为空格

    word ={}

    for i in a.split():

        word[i] = word.get(i,0)+1  # 统计i出现次数

    return word

count_str = input("Please input a string:\n")

print(count_str_word(count_str))

该版本实现了从字符串中清洗多余的标点,转换为单词并计算出现频次。

3.2字典按值排序

查阅资料,发现sorted()函数可实现对字典按键或值排序,需要运用lambda匿名函数。

方法如下:

d = {"a":1, "b":5, "c":2, "d":4}

a = sorted(d.items(), key = lambda x : x[0])  # 按键名排序

a1 = sorted(d.items(), key = lambda x : x[0],reverse = True)

b = sorted(d.items(), key = lambda x : x[1])  # 按值排序

b1 = sorted(d.items(),key = lambda x : x[1],reverse = True)

print(a)

print(a1)

print(b)

print(b1)

3.3 版本2.0

# 版本2.0

def count_str_word(s):  # 统计字符串单词频次,参数 s 代表字符串

    a = s.replace(",", " ")  # 将逗号替换为空格

    a = a.replace(".", " ")  # 将句号替换为空格

    a = a.replace("?", " ")  # 将问号替换为空格

    word ={}

    for i in a.split():

        word[i] = word.get(i,0)+1  # 统计i出现次数

    result = sorted(word.items(),key = lambda x : x[1], reverse = True)

    return result

count_str = input("Please input a string:\n")

print(count_str_word(count_str))

3.4 版本2.1

使用set()去重,用count()计算单词在列表中出现次数,并传入字典。

其他与版本2.0相同。

# 版本2.1

def count_str_word(s):  # 统计字符串单词频次,参数 s 代表字符串

    a = s.replace(",", " ")  # 将逗号替换为空格

    a = a.replace(".", " ")  # 将句号替换为空格

    a = a.replace("?", " ")  # 将问号替换为空格

    b = a.split()

    w =set(b)   # 去重

    word = {}  

    for i in w:

        word[i] = b.count(i)  # 将单词在列表中出现次数传入字典

    result = sorted(word.items(),key = lambda x : x[1], reverse = True)

    return result

count_str = input("Please input a string:\n")

print(count_str_word(count_str))

51Day Day up!

向上向善,日进一步!

每天学习,努力成长!

定个小目标,开启成长的旅程,遇见更好的自己。

这是我们和自己的约定,许诺自己不负韶华。

路虽远,行则将至;事虽难,做则必成。

成长的最好时机,就是当下。

相关文章

  • Day049|Python300例之统计字符串各单词频次并排序输

    今天是Andy学Python的第49天哦! 大家好,我是Andy。 昨天学习了计算字符串中单词出现的数量,今天继续...

  • 11.6 字符串示例:字符串排序

    字符串排序只要是用strcmp()函数来确定两个字符串的顺序,一般的做法是读取字符串函数,排序字符串并打印出来。输...

  • 笔试面试 | 扒一扒笔试面试中的编程题

    ©一颗斯特拉 1.字符串的排序和次数统计(3月25日) 题目:统计字符串中各字母数,例如abbbe,则输出a1b3...

  • MapReduce案例

    一、单词统计 需求分析统计每个单词出现的次数 输入样例 输出样例 示例代码 二、温度统计 需求分析统计每一年的每个...

  • 前端面试算法题

    算法题汇总 编写一个数组去重的方法 统计字符串中字母个数并统计最多字母数 3.快速排序 "快速排序"的整个过程只需...

  • Trie树

    Trie树,即字典树,又称单词查找树。经常应用于字符串的统计与排序,经常被搜索引擎系统用于文本词频统计。 核心思想...

  • 数组实例

    例1:翻转字符串 例2:阶乘 例3:回文 例4:找出最大的单词,并返回它的长度 例5:将首字母替换成大写 例6:找...

  • 根据字符出现频率排序

    题目: 统计字符串中各字母(区分大小写)出现的频度并按字母在字符串中出现的次数从大到小排序。 代码: #inclu...

  • 打卡8.14

    题目:字符串排序。 程序: 输出样例:

  • Python Vs Perl6

    zip() Python Perl6 按照日期字符串排序 给定一个列表,按照日期字符串进行排序: Python 输...

网友评论

      本文标题:Day049|Python300例之统计字符串各单词频次并排序输

      本文链接:https://www.haomeiwen.com/subject/utcgkltx.html