我是靠谱客的博主 时尚跳跳糖,最近开发中收集的这篇文章主要介绍Python:文本词频统计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

字典

hamletTxt = getText()
words = hemletTxt.split()
counts={}
for word in words:
    counts[word]=counts.get(word,0)+1

这是一段遍历Hamlet.txt文件的一段代码.s.split()函数返回的是列表list

我有一些困惑:
1.最后一句代码是如何运行的?

counts[word]=counts.get(word,0)+1

python是如何执行它的?从左到右?还是从右到左?

print(lst)==lst.reverse()

利用这段函数的运行,发现python会先打印,再翻转,所以说是从左往右的。

所以代码是先运行等号左边的代码, 先将word这个键创建,此时还未执行"="操作.
然后再运行等号右边的代码.
[cout.get(key,default=None)这个函数是通过key获取value,如果找不到key,则返回None.]
由于count.get(word,0)是第一次在字典中查找key,所以会返回0,这个时候需要加1.同时也是为了以后的累加,如同sum =sum+1一样.
[因为word是从txt文本中获得的,所以必定出现一次]

2,知道了如何添加键与值,如何累加呢?
字典比较神奇的一点就是,它的添加和修改是同样的形式.

>>> count
{'nihao': 2, 'buhao': 3}
>>> count['nihao']=3
>>> count
{'nihao': 3, 'buhao': 3}
>>> count['aini']=2
>>> count
{'nihao': 3, 'buhao': 3, 'aini': 2}

从以上代码可以发现,如何键在字典里面,则"count[键]=值"是修改;若不在字典里面,则是添加.

所以,对txt引入字典的概念,也正是利用了这一特性,用了一行代码就搞定了[word]与[次数]的问题.

排序

items = list(counts.items()) 
items.sort(key = lambda x:x[1],reverse = True)

counts.items()函数以列表的形式返回可遍历的(键, 值) 元组数组

>>> count={'nihao': 2, 'buhao': 3}
>>> count.items()
dict_items([('nihao', 2), ('buhao', 3)])
>>> list(count)
['nihao', 'buhao']
>>> list(count.keys())
['nihao', 'buhao']
>>> list(count.values())
[2, 3]

count.items()是转换成二维的元组形式
list(count)与list(count.keys())有同样的效果,将键转成list
list(count.values())将值转成list

items.sort(key = lambda x:x[1],reverse = True)

items.sort()函数是对元素以从小到大的方式进行排序,所以这里使用了reverse参数,使得元素从大到小排序.

如果处理的数据不是一维的,而是二维的甚至多维的,就要利用sorted()函数内的key参数,它可传入一个自定义函数.
这里items中包含的是一组二维的元组(键,值),这里使用了lambda函数.

>>> y = lambda x,y:x+y
>>> y(1,2)
3

lambda函数是一个匿名函数,从上面例子可知,":"冒号后面的是表达式.输入的参数以逗号隔开.

key参数传入了一个lambda函数表达式,其x就代表列表里的每一个元素,然后分别利用索引返回元素内的第X个元素,这就代表了sort()函数利用哪一个元素进行排列。
所以就是按照元组中的第二个元素进行排序.

最后

以上就是时尚跳跳糖为你收集整理的Python:文本词频统计的全部内容,希望文章能够帮你解决Python:文本词频统计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部