欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 統(tǒng)計(jì)字?jǐn)?shù)的思路詳解

 更新時(shí)間:2018年05月08日 14:20:36   作者:云騰  
這篇文章主要介紹了Python 統(tǒng)計(jì)字?jǐn)?shù)的思路詳解,文中還給大家提供了不借助第三方模塊的解決方法,感興趣的朋友一起看看吧

 問(wèn)題描述:

用 Python 實(shí)現(xiàn)函數(shù) count_words(),該函數(shù)輸入字符串 s 和數(shù)字 n,返回 s 中 n 個(gè)出現(xiàn)頻率最高的單詞。返回值是一個(gè)元組列表,包含出現(xiàn)次數(shù)最高的 n 個(gè)單詞及其次數(shù),即 [(<單詞1>, <次數(shù)1>), (<單詞2>, <次數(shù)2>), ... ],按出現(xiàn)次數(shù)降序排列。

您可以假設(shè)所有輸入都是小寫(xiě)形式,并且不含標(biāo)點(diǎn)符號(hào)或其他字符(只包含字母和單個(gè)空格)。如果出現(xiàn)次數(shù)相同,則按字母順序排列。

例如:

print count_words("betty bought a bit of butter but the butter was bitter",3)

輸出:

[('butter', 2), ('a', 1), ('betty', 1)]

解決問(wèn)題的思路:

1. 將字符串s進(jìn)行空白符分割得到所有的單詞列表split_s,如:['betty', 'bought', 'a', 'bit', 'of', 'butter', 'but', 'the', 'butter', 'was', 'bitter']

2. 建立maplist,將split_s轉(zhuǎn)化為元素為元組的列表形式,如:[('betty', 1), ('bought', 1), ('a', 1), ('bit', 1), ('of', 1), ('butter', 1), ('but', 1), ('the', 1), ('butter', 1), ('was', 1), ('bitter', 1)]

3. 合并maplist中元素,元組的第一個(gè)索引值相同,則將其第二個(gè)索引值相加。

// 備注:準(zhǔn)備采用defaultdict。得到的數(shù)據(jù)如下:{'betty': 1, 'bought': 1, 'a': 1, 'bit': 1, 'of': 1, 'butter': 2, 'but': 1, 'the': 1, 'was': 1, 'bitter': 1}

4. 進(jìn)行排序,按照key進(jìn)行字母排序,得到如下:[('a', 1), ('betty', 1), ('bit', 1), ('bitter', 1), ('bought', 1), ('but', 1), ('butter', 2), ('of', 1), ('the', 1), ('was', 1)]

5. 進(jìn)行二次排序, 按照value進(jìn)行排序,得到如下:[('butter', 2), ('a', 1), ('betty', 1), ('bit', 1), ('bitter', 1), ('bought', 1), ('but', 1), ('of', 1), ('the', 1), ('was', 1)]

6. 使用切片取出頻率較高的*組數(shù)據(jù)

總結(jié):在python3上不進(jìn)行defaultdict進(jìn)行排序結(jié)果也是正確的,python2上不正確。defaultdict本身是沒(méi)有順序的,要區(qū)分列表,所以必須進(jìn)行排序。

也可嘗試自己寫(xiě),不借助第三方模塊

解決方案1(使用defaultdict):

from collections import defaultdict
"""Count words."""
def count_words(s, n):
  """Return the n most frequently occuring words in s."""
  split_s = s.split()
  map_list = [(k,1) for k in split_s]
  output = defaultdict(int)
  for d in map_list:
    output[d[0]] += d[1]
  output1 = dict(output)
  top_n = sorted(output1.items(), key=lambda pair:pair[0], reverse=False)
  top_n = sorted(top_n, key=lambda pair:pair[1], reverse=True)
  return top_n[:n]
def test_run():
  """Test count_words() with some inputs."""
  print(count_words("cat bat mat cat bat cat", 3))
  print(count_words("betty bought a bit of butter but the butter was bitter", 4))
if __name__ == '__main__':
  test_run()

解決方案2(使用Counter)

from collections import Counter
"""Count words."""
def count_words(s, n):
  """Return the n most frequently occuring words in s."""
  split_s = s.split()
  split_s = Counter(name for name in split_s)
  print(split_s)
  top_n = sorted(split_s.items(), key=lambda pair:pair[0], reverse=False)
  print(top_n)
  top_n = sorted(top_n, key=lambda pair:pair[1], reverse=True)
  print(top_n)
  return top_n[:n]
def test_run():
  """Test count_words() with some inputs."""
  print(count_words("cat bat mat cat bat cat", 3))
  print(count_words("betty bought a bit of butter but the butter was bitter", 4))
if __name__ == '__main__':
  test_run()

總結(jié)

以上所述是小編給大家介紹的Python 統(tǒng)計(jì)字?jǐn)?shù)的思路詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • python調(diào)用OpenCV實(shí)現(xiàn)人臉識(shí)別功能

    python調(diào)用OpenCV實(shí)現(xiàn)人臉識(shí)別功能

    這篇文章主要為大家詳細(xì)介紹了python調(diào)用OpenCV實(shí)現(xiàn)人臉識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python操作mongodb數(shù)據(jù)庫(kù)的方法詳解

    Python操作mongodb數(shù)據(jù)庫(kù)的方法詳解

    這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python下載、安裝pymongo及操作MongoDB數(shù)據(jù)庫(kù)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-12-12
  • Python如何實(shí)現(xiàn)自帶HTTP文件傳輸服務(wù)

    Python如何實(shí)現(xiàn)自帶HTTP文件傳輸服務(wù)

    這篇文章主要介紹了Python如何實(shí)現(xiàn)自帶HTTP文件傳輸服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • django 中的聚合函數(shù),分組函數(shù),F(xiàn) 查詢(xún),Q查詢(xún)

    django 中的聚合函數(shù),分組函數(shù),F(xiàn) 查詢(xún),Q查詢(xún)

    這篇文章主要介紹了django 中的聚合函數(shù),分組函數(shù),F(xiàn) 查詢(xún),Q查詢(xún),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python切片操作實(shí)例分析

    Python切片操作實(shí)例分析

    這篇文章主要介紹了Python切片操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python切片相關(guān)的正向、反向、步長(zhǎng)等使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • 基于python的前后端分離的模擬實(shí)現(xiàn)

    基于python的前后端分離的模擬實(shí)現(xiàn)

    前后端分離核心是UI界面展示層(View)和數(shù)據(jù)處理層(Model)通過(guò)控制層(Controller)進(jìn)行解耦合,在MVC設(shè)計(jì)模式中,前端主要負(fù)責(zé)數(shù)據(jù)展示和用戶(hù)交互(View),后端處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)(Model),通過(guò)API接口進(jìn)行通信,提高了開(kāi)發(fā)效率,便于前后端分工合作,有利于代碼的維護(hù)和迭代
    2024-10-10
  • python自帶tkinter庫(kù)實(shí)現(xiàn)棋盤(pán)覆蓋圖形界面

    python自帶tkinter庫(kù)實(shí)現(xiàn)棋盤(pán)覆蓋圖形界面

    這篇文章主要為大家詳細(xì)介紹了python自帶tkinter庫(kù)實(shí)現(xiàn)棋盤(pán)覆蓋圖形界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python 讀取txt,json和hdf5文件的實(shí)例

    python 讀取txt,json和hdf5文件的實(shí)例

    今天小編就為大家分享一篇python 讀取txt,json和hdf5文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Django框架自定義模型管理器與元選項(xiàng)用法分析

    Django框架自定義模型管理器與元選項(xiàng)用法分析

    這篇文章主要介紹了Django框架自定義模型管理器與元選項(xiàng)用法,結(jié)合實(shí)例形式分析了自定義模型管理器與元選項(xiàng)的功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • python opencv調(diào)用筆記本攝像頭

    python opencv調(diào)用筆記本攝像頭

    這篇文章主要為大家詳細(xì)介紹了python opencv調(diào)用筆記本攝像頭,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論