英文文章单词个数的统计与排序

今天,有个朋友问了这个问题,刚看见的时候,觉得这个问题挺容易的。

在网上随便找了一篇纯英文美文,保存成txt文件

首先用获取文件内的文章内容,英文之间是通过空格区分间隙,利用字符中split()方法将文章切分成单词,存入一个列表中

python中set集合可以实现去去重的功能,之后再将set集合转换成为列表,列表操作更加的便利

for循环去重后的列表,判断单词持否在未去重的列表内出现

在单词出现数量排序的时候,我遇到了问题,尝试好了好几个方法都没有解决,百度时发现,忽略了sorted()方法与lambda匿名函数的使用。当时学习列表的时候只记得sorted方式中的reverse参数,匿名函数只是简单的了解一下。

详细的研究了sorte()方法与lambda匿名函数,问题仅用一行代码解决

sorted(iterable, cmp=None, key=None, reverse=False)

iterable -- 可迭代对象。
• cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,
此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,
指定可迭代对象中的一个元素来进行排序。
• reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

with open("./data/English_wenzhang.txt", "r", encoding="UTF-8") as f_r:
    content = f_r.read()
# 未去重的单词列表
con_list = content.split()
# 去重合后的set集合
set1 = set(con_list)
# 去重后的单词列表
word_list = list(set1)

dict1 = {}
for i in range(len(con_list)):
    dict1[word_list[i]] = 0
    for j in range(len(con_list)):
        if word_list[i] == con_list[j]:
            dict1[word_list[i]] += 1
# print(dict1)
# print(len(dict1))

print(sorted(dict1.items(), key=lambda kv: (kv[1], kv[0])))

猜你喜欢

转载自blog.csdn.net/qq_41292236/article/details/101384744