老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Python中Collections模塊如何使用

今天就跟大家聊聊有關Python中 Collections 模塊如何使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

創新互聯于2013年創立,先為庫爾勒等服務建站,庫爾勒等地企業,進行企業商務咨詢服務。為庫爾勒企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

collections模塊是一個不用不知道,一用就上癮的模塊。這里主要介紹OrderedDict類、defaultdict類、Counter類、namedtuple類和deque類。

collections

collections的常用類型有:

  • 計數器(Counter)

  • 雙向隊列(deque)

  • 默認字典(defaultdict)

  • 有序字典(OrderedDict)

  • 可命名元組(namedtuple)

Counter

計數器(counter)以字典的形式返回序列中各個字符出現的次數,值為key,次數為value

Counter是對字典類型的補充,用于追蹤值得出現次數 。

import collections  counter = collections.Counter("My name is Runsen") print(counter)

輸出如下

Counter({' ': 3, 'n': 3, 'e': 2, 's': 2, 'M': 1, 'y': 1, 'a': 1, 'm': 1, 'i': 1, 'R': 1, 'u': 1})

取得元素重復次數的值

print(counter[' ']) 3

elements()取得計數器中的所有元素。

注:此處非所有元素集合,而是包含所有元素集合的迭代器.

counter = collections.Counter('abcabcabcdabcdef')  print(counter) # 輸出如下 Counter({'a': 4, 'b': 4, 'c': 4, 'd': 2, 'e': 1, 'f': 1})  print(counter.elements()) # 輸出如下   print(list(counter.elements())) # 輸出如下 ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd', 'e', 'f']

將Counter按照value從大到小排列,獲取前N個元素,需要使用函數most_common

# most_common(N)數量從大到小排列,獲取前N個元素  print(counter.most_common(3)) # 輸出如下 [('a', 4), ('b', 4), ('c', 4)]

sorted將Counter中的key進行排序,返回的是所有key的列表

# sorted()列出所有不同的元素并排序  print(sorted(counter))  # 輸出如下 ['a', 'b', 'c', 'd', 'e', 'f']

將Counter轉換成字符串,字符串的join方法可以解決。注意不是原來的模樣。

# 轉換成字符串  print(''.join(counter.elements())) # aaaabbbbccccddef print(''.join(list(counter.elements())))

update()更新計數器,其實在原本的counter更新計數器,如果原來沒有,則新建key,如果有value則加一

# update()更新計數器, d = collections.Counter('a')  counter.update(d)  print(counter)  # 輸出如下 Counter({'a': 5, 'b': 4, 'c': 4, 'd': 2, 'e': 1, 'f': 1})

update()更新計數器,那么subtract()相減計數器的values,即原來的計數器中的每一個元素的數量減去后添加的元素的數量

counter.subtract('abdabcabcg')  print(counter)  # 輸出如下 Counter({'a': 2, 'c': 2, 'b': 1, 'd': 1, 'e': 1, 'f': 1, 'g': -1})

deque

deque支持從任意一端增加和刪除元素。更為常用的兩種結構,就是棧和隊列。

deque的常見操作

#定義一個空的雙向隊列 d = collections.deque()  #從右端增加元素 d.extend("Runsen")  d.append("Maoli") d.append("Python") d.append("king")  #從左端增加元素 d.appendleft('left') print(d) # 輸出如下 (注意:extend和append的區別) deque(['left', 'R', 'u', 'n', 's', 'e', 'n', 'Maoli', 'Python', 'king'])  # reverse()反轉隊列  print(d.reverse()) d.reverse() print(d) # 輸出如下 None deque(['king', 'Python', 'Maoli', 'n', 'e', 's', 'n', 'u', 'R', 'left'])   d.reverse() d.extend(['qq','ww','ee'])  print(d)  # deque(['left', 'R', 'u', 'n', 's', 'e', 'n', 'Maoli', 'Python', 'king', 'qq', 'ww', 'ee'])   # count()計數  print(d.count('R')) # 輸出如下 1  # clear()清空隊列  d.clear()  print(d)  # 輸出如下 deque([])  # index()取得元素下標  print(d.index('Maoli')) # 輸出如下 7  # insert()指定位置插入元素  d.insert(1,'Runsen')  print(d)  # deque(['left', 'Runsen',R', 'u', 'n', 's', 'e', 'n', 'Maoli', 'Python', 'king', 'qq', 'ww', 'ee'])

OrderedDict

使用dict時要保持Key的順序,可以用OrderedDict。

from collections import OrderedDict  dic = OrderedDict()  dic['k1'] = 'v1'  dic['k2'] = 'v2'  dic['k3'] = 'v3'  print(dic)  # 輸出如下 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])  # 字典所有的鍵  print(dic.keys()) # 輸出如下  odict_keys(['k1', 'k2', 'k3'])      # 字典所有值  print(dic.values()) # 輸出如下 odict_values(['v1', 'v2', 'v3'])      # items() 方法以列表返回可遍歷的(鍵, 值) 元組數組  print(dic.items())  # 輸出如下 odict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])       #pop()方法,刪除指定的鍵值  dic.pop('k1')   print(dic)  # 輸出如下 OrderedDict([('k2', 'v2'), ('k3', 'v3')])   #popitem()方法,默認刪除字典最后一個元素  dic.popitem()  print(dic)  # 輸出如下 OrderedDict([('k2', 'v2')])  # update()更新字典  dic.update({'k1':'v1111','k10':'v10'})  print(dic)  # 輸出如下 OrderedDict([('k2', 'v2'), ('k1', 'v1111'), ('k10', 'v10')])

OrderedDict和字典操作完全相同,區別在于OrderedDict的Key會按照插入的順序排列,不是Key本身排序

>>> from collections import OrderedDict >>> d = dict([('a', 1), ('b', 2), ('c', 3)]) >>> d # dict的Key是無序的 {'a': 1, 'c': 3, 'b': 2} >>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) >>> od # OrderedDict的Key是有序的 OrderedDict([('a', 1), ('b', 2), ('c', 3)])

defaultdict

在使用字典的時候, 如果在使用不存在的key的時候發生KeyError這樣的一個報錯,  這時候就該defaultdict登場了。

defaultdict接受一個工廠函數作為參數來構造:dict =defaultdict(  factory_function)這個factory_function可以是list、set、str等等,作用是當key不存在時,返回的是工廠函數的默認值,比如list對應[  ],str對應的是空字符串,set對應set( ),int對應0,如下舉例:

from collections import defaultdict  dict1 = defaultdict(int) dict2 = defaultdict(set) dict3 = defaultdict(str) dict4 = defaultdict(list) dict1[2] ='two'  print(dict1[1]) print(dict2[1]) print(dict3[1]) print(dict4[1])  # 輸出如下 0 set()  []

defaultdict類接受類型名稱作為初始化函數的參數,這樣使得默認值的取值更加靈活。

s = 'mynameisrunsen' d = collections.defaultdict(int) for k in s:     d[k] += 1 print(d)  # 輸出如下 defaultdict(, {'m': 2, 'y': 1, 'n': 3, 'a': 1, 'e': 2, 'i': 1, 's': 2, 'r': 1, 'u': 1})

練習有如下值集合 [11,22,33,44,55,66,77,88,99,99]。

下面將所有大于 55的值保存至字典的第一個key中,將小于 55 的值保存至第二個key的值中。

下面通過defaultdict默認字典對列表進行劃分。

all_list = [11,22,33,44,55,66,77,88,99] dic = collections.defaultdict(list) for i in all_list:     if i > 55:         dic['k1'].append(i)     else:         dic['k2'].append(i) print(dic) # 輸出如下 defaultdict(, {'k2': [11, 22, 33, 44, 55], 'k1': [66, 77, 88, 99]})

也可以使用字典,具體代碼如下。

all_list = [11,22,33,44,55,66,77,88,99] dic = {} for i in all_list:     if i > 55:         if "k1" in dic.keys():             dic['k1'].append(i)         else:             dic['k1'] = [i,]     else:         if "k2" in dic.keys():             dic['k2'].append(i)         else:             dic['k2'] = [i,] print(dic) # 輸出如下 {'k2': [11, 22, 33, 44, 55], 'k1': [66, 77, 88, 99]}

namedtuple

namedtuple是用來創建一個自定義的tuple對象,并且規定了tuple元素的個數,并可以用屬性而不是索引來引用tuple的某個元素。

使用命名元組的步驟:

# 將元組封裝為一個類,可以通過字段名(屬性名)來訪問元組中的值 # 支持元組的所有操作 from collections import namedtuple # 1、定義一個類 Runsen = namedtuple('Runsen', ['name','sex','age']) # 2、創建對象 runsen = Runsen("Runsen", "帥男", 21) # 3、獲取命名元組的值 print(runsen[1])    # 支持元組的索引取值   print(runsen[-2:])  # 支持切片 print(runsen.name)  # 支持通過字段名來取值  # _fields,獲取命名元組的所有屬性名 print(runsen._fields) # _asdict方法,將元組轉化為字典 print(runsen._asdict())  # 輸出如下  帥男 ('帥男', 21) Runsen ('name', 'sex', 'age') OrderedDict([('name', 'Runsen'), ('sex', '帥男'), ('age', 21)])

看完上述內容,你們對Python中 Collections 模塊如何使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。


網站名稱:Python中Collections模塊如何使用
標題鏈接:http://www.xueling.net.cn/article/jhsgeo.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 成人性生交A片免费看V | 成年人视频免费 | 久久高清片 | 伊人天天干| 香蕉欧美成人精品A∨在线观看 | 亚洲黄色小说视频 | 亚洲一区二区三区在线视频观看 | 亚洲精品无码AV人在线观看 | 一级毛片免费视频观看 | 亚洲大片精品永久免费 | 三年成全免费高清大全 | 黄页在线观看视频 | 伊人免费入口 | 国产欧美另类久久久精品91区 | 蜜桃视频最新网址 | 久久免费视老师机影片 | 蝌蚪久久窝| 国产精品伊人影院 | 国产欧美日韩一区二区三区在线 | 午夜国产视频精品久久 | 超鹏97国语 | 亚洲三级在线免费观看 | 日本男人日女人视频 | 成人亚洲一区二区三区在线 | 天天曰夜夜操 | 亚洲AV永久无码国产精品久久 | 操bb影院 | 九九九九国产 | 日韩精品无码AV成人观看 | 东北丰满老熟女 | 永久免费精品精品永久-夜色 | 奶水都出来了[14p] | 亚洲精品在线第一页 | 国产毛片毛片毛片毛片毛片毛片 | 狠狠热精品免费视频 | 亚洲国产精品高清在线观看 | 无码少妇一区二区三区免费 | 黑人巨茎大战白人美女 | 久久厕所偷拍视频 | JIZZJIZZ亚洲日本少妇 | 91视频免费入口 |