<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      翻譯:《實用的Python編程》02_05_Collections

      目錄 | 上一節 (2.4 序列) | 下一節 (2.6 列表推導式)

      2.5 collections 模塊

      collections 模塊為數據處理提供了許多有用的對象。本部分簡要介紹其中的一些特性。

      示例:事物計數

      假設要把每只股票的總份額表格化。

      portfolio = [
          ('GOOG', 100, 490.1),
          ('IBM', 50, 91.1),
          ('CAT', 150, 83.44),
          ('IBM', 100, 45.23),
          ('GOOG', 75, 572.45),
          ('AA', 50, 23.15)
      ]
      

      此表中有兩個 IBM 條目,兩個 GOOG 條目,它們應該以某種方式合并到一起。

      計數

      解決方案:使用 Counter 模塊。

      from collections import Counter
      total_shares = Counter()
      for name, shares, price in portfolio:
          total_shares[name] += shares
      
      total_shares['IBM']     # 150
      

      示例:一對多映射

      問題:把一個鍵映射到多個值。

      portfolio = [
          ('GOOG', 100, 490.1),
          ('IBM', 50, 91.1),
          ('CAT', 150, 83.44),
          ('IBM', 100, 45.23),
          ('GOOG', 75, 572.45),
          ('AA', 50, 23.15)
      ]
      

      像之前的示例那樣,鍵 IBM 應具有兩個不同的元組。

      解決方案:使用 defaultdict 模塊。

      from collections import defaultdict
      holdings = defaultdict(list)
      for name, shares, price in portfolio:
          holdings[name].append((shares, price))
      holdings['IBM'] # [ (50, 91.1), (100, 45.23) ]
      

      defaultdict模塊確保每次訪問鍵的時候獲取到一個默認值。

      示例:保留歷史記錄

      問題:我們需要最近 N 件事的歷史。

      解決方案:使用 deque 模塊。

      from collections import deque
      
      history = deque(maxlen=N)
      with open(filename) as f:
          for line in f:
              history.append(line)
              ...
      

      練習

      collections 可能是最有用的庫模塊之一,用于解決特殊用途的數據處理問題,例如表格化或者索引化。

      在本練習中,我們來看幾個簡單的例子。首先運行report.py ,以便在交互模式下能夠加載股票投資組合。

      bash % python3 -i report.py
      

      練習 2.18:使用 Counter 模塊表格化

      假設需要將每支股票的份額總數表格化,那么使用 Counter 對象會很容易。試試看:

      >>> portfolio = read_portfolio('Data/portfolio.csv')
      >>> from collections import Counter
      >>> holdings = Counter()
      >>> for s in portfolio:
              holdings[s['name']] += s['shares']
      
      >>> holdings
      Counter({'MSFT': 250, 'IBM': 150, 'CAT': 150, 'AA': 100, 'GE': 95})
      >>>
      

      仔細觀察portfolio 中的 MSFTIBM 的多個條目是如何合并的。

      可以像字典一樣使用 Counter 模塊檢索單個值。

      >>> holdings['IBM']
      150
      >>> holdings['MSFT']
      250
      >>>
      

      如果想要對值排名,這樣做:

      >>> # Get three most held stocks
      >>> holdings.most_common(3)
      [('MSFT', 250), ('IBM', 150), ('CAT', 150)]
      >>>
      

      讓我們獲取另一個股票投資組合并生成一個新的 Counter 對象:

      >>> portfolio2 = read_portfolio('Data/portfolio2.csv')
      >>> holdings2 = Counter()
      >>> for s in portfolio2:
                holdings2[s['name']] += s['shares']
      
      >>> holdings2
      Counter({'HPQ': 250, 'GE': 125, 'AA': 50, 'MSFT': 25})
      >>>
      

      最后,通過一個簡單的操作把所有的 holdings 變量合并。

      >>> holdings
      Counter({'MSFT': 250, 'IBM': 150, 'CAT': 150, 'AA': 100, 'GE': 95})
      >>> holdings2
      Counter({'HPQ': 250, 'GE': 125, 'AA': 50, 'MSFT': 25})
      >>> combined = holdings + holdings2
      >>> combined
      Counter({'MSFT': 275, 'HPQ': 250, 'GE': 220, 'AA': 150, 'IBM': 150, 'CAT': 150})
      >>>
      

      這只是對 Counter 功能的一個小嘗試,如果發現需要對值進行表格化,那么就應該考慮使用它。

      說明:collections 模塊

      collections 模塊是 Python 所有庫中最有用的庫模塊之一。實際上,我們可以為此做一個拓展教程,但是,現在這樣做會分散注意力。從現在開始,把collections列為您的睡前讀物,以備后用。

      目錄 | 上一節 (2.4 序列) | 下一節 (2.6 列表推導式)

      注:完整翻譯見 https://github.com/codists/practical-python-zh

      posted @ 2021-02-24 23:48  codists  閱讀(139)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国内自拍av在线免费| 视频一区二区三区四区五区| 久久精品国产99国产精品澳门| 亚洲国产av永久精品成人| 欧美交a欧美精品喷水| 精品国产精品午夜福利| 丰满人妻一区二区三区无码AV| 饥渴少妇高潮正在播放| 精品视频一区二区福利午夜| 九九久久自然熟的香蕉图片| 国产精品国产三级国av| 麻豆一区二区三区精品视频| 欧美性猛交xxxx乱大交丰满| 日本欧美大码a在线观看| 老鸭窝在线视频| 乱码视频午夜在线观看| 天天做天天躁天天躁| 元码人妻精品一区二区三区9| 毛片无码一区二区三区| 英山县| 老妇女性较大毛片| 少妇xxxxx性开放| 雷山县| 亚洲精品成人片在线观看精品字幕 | 粉嫩国产av一区二区三区| 亚洲人妻系列中文字幕| 国产精品国色综合久久| 国产一区二区三区麻豆视频| 免费无码AV一区二区波多野结衣| 亚洲精品宾馆在线精品酒店| 久久久久无码中| 理论片午午伦夜理片影院99| 国产精品一二三区蜜臀av| 国产精品不卡一区二区在线| 男女啪啪免费观看网站| 国产精品一区二区三区激情| 自偷自拍亚洲综合精品| 精品人妻av综合一区二区| 天堂网亚洲综合在线| 亚洲性日韩精品一区二区三区| 亚洲天堂亚洲天堂亚洲天堂|