7.Python自學之路:collections系列

來源:互聯網
上載者:User

標籤:microsoft   gif   port   技術分享   val   基礎上   images   class   efault   

一丶計數器(counter)

    counter是對字典類型的補充,用於追蹤值的出現次數,它整合了父類dict所有的功能。

import collectionsobj = collections.Counter(‘aaabbbcccddd‘)   #collections檔案下的Counter類print(obj)                                        #以字典的形式返回ret = obj.most_common(4)print(ret)                                         #前4名最多的                                             for k in obj.elements():                         #element原生的值    print(k)                                      #aaabbbcccdddfor k,v in obj.items():               #obj的鍵為字元,值為出現的個數,組成的字典    print(k,v)                                  #a 3 b 3 c 3 d 3                                    #dict的迴圈方法有 items() keys() values()                              #counter(dict) items() keys() values() elements()obj = collections.Counter([‘11‘,‘22‘,‘33‘,‘22‘])print(obj)obj.update([‘eric‘,‘11‘,‘11‘])print(obj)
Counter

 

二丶有序字典(orderedDict)

    OrderedDict是對字典類型的補充,在dict的基礎上增加了有序的功能。    

 1 #字典和列表結合成為有序字典 2 # dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} 3 # li = list([‘k1‘,‘k2‘]) 4 # 5 # for i in li : 6 #     print(dic[i]) 7 import collections 8  9 dic = collections.OrderedDict()10 dic[‘k1‘] = ‘v1‘11 dic[‘k2‘] = ‘v2‘12 dic[‘k3‘] = ‘v3‘13 print(dic)  #OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘)])14 15 dic.move_to_end(‘k1‘)   #將k1和它的值放在最後16 print(dic)  #OrderedDict([(‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k1‘, ‘v1‘)])17 18 dic.popitem()    #從最後一個開始取出來,棧。19 print(dic)       #OrderedDict([(‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘)])20 ret = dic.pop(‘k2‘) 21 print(dic)  #OrderedDict([(‘k3‘, ‘v3‘)])22 print(ret)  #v223 24 dic.setdefault(‘k4‘,666)#不提供參數的時候等價於dic[‘k4‘] = none25 print(dic)   #OrderedDict([(‘k3‘, ‘v3‘), (‘k4‘, 666)])26 27 dic.update({‘k1‘:‘v111‘,‘k10‘:‘v10‘})  #原先有的,就修改原先的值,沒有的就加進去28 print(dic)  #OrderedDict([(‘k3‘, ‘v3‘), (‘k4‘, 666), (‘k10‘, ‘v10‘), (‘k1‘, ‘v111‘)])
OrderedDict

 

三丶預設字典(defaultdict)

    DefaultDict是對字典的類型的補充,他預設給字典的值設定了一個類型。

 1 import collections 2  3 dic = collections.defaultdict(list) #其值就是list 4 dic[‘k1‘].append(‘alex‘) 5 print(dic)           #defaultdict(<class ‘list‘>, {‘k1‘: [‘alex‘]}) 6  7  8 #有如下值集合 9 #[11,22,33,44,55,66,77,88,99,90]10 #將所有 大於66的值儲存到字典的第一個key中,11 # 將小於66的值儲存到第二個key的值中。12 #即:{‘k1‘:大於66,‘k2‘:小於等於66}13 #目的:{‘k1‘:[66,77,88,99,90],‘k2‘:[11,22,33,44,55]}14 15 #第一種方法:16 dic = {}17 all_list = [11,22,33,44,55,66,77,88,99,90]18 for i in all_list:19     if i > 66:20         if ‘k1‘ in dic.keys():21             dic[‘k1‘].append(i)22         else:23             dic[‘k1‘] = [i, ]   24     else:25         if ‘k2‘ in dic.keys():26             dic[‘k2‘].append(i)27         else:28             dic[‘k2‘] = [i, ]   29 30 #對比一下,即使我們不用初始化進去一個列表31              #改進如下32 dic = collections.defaultdict(list)33 all_list = [11,22,33,44,55,66,77,88,99,90]34 for i in all_list:35     if i > 66:36         dic[‘k1‘].append(i)37     else:38         dic[‘k2‘].append(i)
DefaultDict

 

四丶可命名元組(namedtuple)

    根據nametuple可以建立一個包含tuple所有功能以及其他功能的類型。

 1 #t = (11, 22, 33, 44) 2 #name adddress gender Email   類似於座標 3 #t.name 等價於 t[0] 4  5 import collections 6  7 #建立類,和defaultdict的作用類似 8 MytupleClass = collections.namedtuple(‘MytupleClass‘,[‘x‘,‘y‘,‘z‘]) 9 print(help(MytupleClass))10 obj = MytupleClass(11,22,33)11 print(obj.x)12 print(obj.y)13 print(obj.z)
NamedTuple

 

五丶隊列(deque & queue.Queue)  雙向隊列:deque
 1 import collections 2  3 #雙向隊列 4 d = collections.deque() 5 d.append(‘1‘) 6 d.append(‘10‘) 7 d.appendleft(‘1‘) 8 print(d)    #deque([‘1‘, ‘1‘, ‘10‘]) 9 d.extend([‘yy‘,‘uu‘,‘zz‘,‘xx‘])10 print(d)    #deque([‘1‘, ‘1‘, ‘10‘, ‘yy‘, ‘uu‘, ‘zz‘, ‘xx‘])11 d.rotate(5) #迴圈移動幾位12 print(d)    #deque([‘10‘, ‘yy‘, ‘uu‘, ‘zz‘, ‘xx‘, ‘1‘, ‘1‘])
deque  單向隊列:queue.Queue
1 #單向隊列2 import queue3 4 q = queue.Queue()5 q.put(‘123‘)6 q.put(‘678‘)7 print(q.qsize()) #28 print(q.get())   #123      只能按類裡面的順序拿
queue.Queue

 

    

7.Python自學之路:collections系列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.