概述
字典
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:文本词频统计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复