IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 7-34 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (25 分) -> 正文阅读

[Python知识库]7-34 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (25 分)

7-34 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (25 分)

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。

基本版:
统计时,区分字母大小写,且不删除指定标点符号。

进阶版:

统计前,需要从文字中删除指定标点符号!.,:*?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
统计单词时需要忽略单词的大小写。

输入说明

若干行英文,最后以!!!为结束。

输出说明

单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。

输入样例1

failure is probably the fortification in your pole

it is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta

when you are wondering whether new money it has laid
background because of you then at the heart of the

most lax alert and most low awareness and left it

godsend failed
!!!!!

输出样例1

46
the=4
it=3
you=3
and=2
are=2
is=2
most=2
of=2
when=2
your=2
结尾无空行

输入样例2

Failure is probably The fortification in your pole!

It is like a peek your wallet as the thief when You
are thinking how to. spend several hard-won lepta.

when yoU are? wondering whether new money it has laid
background Because of: yOu?, then at the heart of the
Tom say: Who is the best? No one dare to say yes.
most lax alert and! most low awareness and* left it

godsend failed
!!!!!
结尾无空行

输出样例2

54
the=5
is=3
it=3
you=3
and=2
are=2
most=2
of=2
say=2
to=2
结尾无空行

我的答案

# 处理多个空格间隔的函数:
def HandleBlock(list):
    new_list =[]
    for item in list:
        if item != "":
            new_list.append(item)
    return new_list

removechars = "!.,:*?"
total_list = []
line = ""
while line != "!!!!!":
    line = input()
    if len(line) == 0:
        pass
    elif line != "!!!!!":
        # 去除 "!.,:*?"
        for char in removechars:
            line = line.replace(char,' ')
        # 去除空格及做列表拆分
        line = line.split(" ")
        line = HandleBlock(line)
        # 统一以小写状态输入
        for item in line:
            total_list.append(item.lower())
    else:
        pass
# 登记出现的个数
# 初始化统计表
statistical_table = {}
for item in total_list:
    statistical_table[item] = 0
# 统计
for item in total_list:
    statistical_table[item] += 1
# 第一层按次数排序
temp_table = list(zip(statistical_table.values(),statistical_table.keys()))
ordered_table = sorted(temp_table,reverse=True)

# 第二层次数相同按键的字母序排序
final_ordered_table = []
cut_list = []
cur_times = ordered_table[0][0]
for item in ordered_table:
    if item[0] == cur_times:
        cut_list.append((item[1],item[0]))
    else:
        ordered_cut_list = sorted(cut_list)
        final_ordered_table += ordered_cut_list
        # 更新当前的值
        cur_times = item[0]
        cut_list = []
        cut_list.append((item[1], item[0]))
ordered_cut_list = sorted(cut_list)
final_ordered_table += ordered_cut_list
# 输出
numb = len(final_ordered_table)
print(numb)
for i in range(10):
    print(f"{final_ordered_table[i][0]}={final_ordered_table[i][1]}")

本题需要注意的要点:

  • 需要对字符串的这些!.,:*?标点符号进行处理,需要用到字符串自带的replace()函数.
  • 在处理字典的键值对的问题的时候,我们往往需要结合元组和列表的相关操作来进行。
  • 使用sorted()函数元素是元组的列表进行排序的时候,排序的参考变量只会是每个元组中的第一个元素。以及sorted()默认升序排列,要求降序的话,需要加上reverse=True
  • zip()函数能灵活按 (键:值) 或者 (值:键) 的循序来整合处理字典,方便分别依照键或依照值为标准来进行排序。

本题最大的难点在于需要进行二次排序:

  • 需要优先进行按值排序后,还要对值相同的切片进行按键排序,其中出现了控制切片排序的方法。
    • 在更新切片序列的时候,别忘记要带上当前的元组所包含的值!
    • 由于切片融入新列表的触发条件是值发生改变,而最后一块值的切片无法在循环中融入新列表,所以需要在循环外额外加入!
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:58:44  更:2021-08-13 11:59:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 5:33:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码