使用Python 统计高频字数的方法
问题
(来自Udacity机器学习工程师纳米学位预览课程)
用Python实现函数count_words(),该函数输入字符串s和数字n,返回s中n个出现频率最高的单词。返回值是一个元组列表,包含出现次数最高的n个单词及其次数,即[(<单词1>,<次数1>),(<单词2>,<次数2>),...],按出现次数降序排列。
可以假设所有输入都是小写形式,并且不含标点符号或其他字符(只包含字母和单个空格)。如果出现次数相同,则按字母顺序排列。
例如:
printcount_words("bettyboughtabitofbutterbutthebutterwasbitter",3)
输出
[('butter',2),('a',1),('betty',1)]
解法
"""Countwords.""" defcount_words(s,n): """Returnthenmostfrequentlyoccuringwordsins.""" w={} sp=s.split() #TODO:Countthenumberofoccurencesofeachwordins foriinsp: ifinotinw: w[i]=1 else: w[i]+=1 #TODO:Sorttheoccurencesindescendingorder(alphabeticallyincaseofties) top=sorted(w.items(),key=lambdaitem:(-item[1],item[0])) top_n=top[:n] #TODO:Returnthetopnmostfrequentwords. returntop_n deftest_run(): """Testcount_words()withsomeinputs.""" printcount_words("catbatmatcatbatcat",3) printcount_words("bettyboughtabitofbutterbutthebutterwasbitter",3) if__name__=='__main__': test_run()
小结
主要两个小技巧:
用split()将输入字符串按空格分开;
用sorted()函数对字典先按值,再按键进行排序,尤其是item:(-item[1],item[0]))代表先对item的第二个元素降序排列(item之前用了-),然后对第一个元素升序排列。多个元素的元组亦然。
以上这篇使用Python统计高频字数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。