Python统计字数的思路详解

  

  

用Python实现函数count_words(),该函数输入字符串年代和数字n,返回s中n个出现频率最高的单词。返回值是一个元组列表,包含出现次数最高的n个单词及其次数,即((& lt;单词1祝辞,& lt;次数1祝辞),(& lt;单词2祝辞,& lt;次数2祝辞),…),按出现次数降序排列。

  

您可以假设所有输入都是小写形式,并且不含标点符号或其他字符(只包含字母和单个空格)。如果出现次数相同,则按字母顺序排列。

  

例如:         打印count_words(“贝蒂买了一点黄油,但是黄油是苦的”,3)      

输出:   

  

[(“黄油”,2),(' a ', 1),(“贝蒂”,1)]

     

  

1。将字符串年代进行空白符分割得到所有的单词列表split_s,如:[‘贝蒂’,‘买’,‘“,“一点”,“的”,“黄油”,“但是”,“的”,“黄油”,“是”、“苦”)

  

2。建立maplist,将split_s转化为元素为元组的列表形式,如:[(“贝蒂”,1),(‘买’,1),(' a ', 1),(‘位’,1),('的',1),(“黄油”,1),('但是',1),('的',1),(“黄油”,1),('是',1),(‘苦’,1)]

  

3。合并maplist中元素,元组的第一个索引值相同,则将其第二个索引值相加。

  

//备注:准备采用defaultdict。得到的数据如下:{“贝蒂”:1、“买”:1、“一个”:1、“钻头”:1、“的”:1、“黄油”:2,“但是”:1、“”:1、“是”:1、“苦”:1}

  

4。进行排序,按照关键进行字母排的序,得到如下:[(' a ', 1),(“贝蒂”,1),(‘位’,1),(‘苦’,1),(‘买’,1),('但是',1),(“黄油”,2),('的',1),('的',1),('是',1)]

  

5。进行二次排序,按照值进行排序,得到如下:[(“黄油”,2),(' a ', 1),(“贝蒂”,1),(‘位’,1),(‘苦’,1),(‘买’,1),('但是',1),('的',1),('的',1),('是',1)]

  

6。使用切片取出频率较高的*组数据

  

总结:在python3上不进行defaultdict进行排序结果也是正确的,python2上不正确.defaultdict本身是没有顺序的,要区分列表,所以必须进行排序。

  

也可尝试自己写,不借助第三方模块

  

解决方案1(使用defaultdict):

        从进口defaultdict集合   ”““计数的话。”“   def count_words (s、n):   ”“”返回n最常发生在s。”“   split_s=s.split ()   map_list=[k (k, 1) split_s)   输出=defaultdict (int)   在map_list: d   输出(d [0]) +=d [1]   output1=dict(输出)   top_n=排序(output1.items()键=λ对:[0],反向=False)   top_n=排序(top_n键=λ对:[1],反向=True)   返回top_n (n):   def test_run ():   ”““测试count_words()和一些输入。”“   打印(count_words(“猫蝙蝠垫猫蝙蝠猫”,3))   打印(count_words(“贝蒂买了一点黄油,但是黄油是苦的”,4))   if __name__==癬_main__”:   test_run ()      

解决方案2(使用计数器)

        从进口计数器集合   ”““计数的话。”“   def count_words (s、n):   ”“”返回n最常发生在s。”“   split_s=s.split ()   split_s=计数器(split_s名称的名称)   打印(split_s)   top_n=排序(split_s.items()键=λ对:[0],反向=False)   打印(top_n)   top_n=排序(top_n键=λ对:[1],反向=True)   打印(top_n)   返回top_n (n):   def test_run ():   ”““测试count_words()和一些输入。”“   打印(count_words(“猫蝙蝠垫猫蝙蝠猫”,3))   打印(count_words(“贝蒂买了一点黄油,但是黄油是苦的”,4))   if __name__==癬_main__”:   test_run ()      

  

以上所述是小编给大家介绍的Python统计字数的思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
  

Python统计字数的思路详解