標籤: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系列