集合妙用的收集
阿新 • • 發佈:2017-08-08
其中 blog 語言 插入 目的 bcd odi ise fse
1)字典: 有序性
collections模塊:
1.OrderedDict: 有序字典
2.defaultdict: 帶有默認值的字典
OrderedDict:
使用dict時,Key是無序的。在對dict做叠代時,我們無法確定Key的順序。
如果要保持Key的順序,可以用OrderedDict
:
>>> 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)])
註意,OrderedDict
的Key會按照插入的順序排列,不是Key本身排序:
>>> od = OrderedDict() >>> od[‘z‘] = 1 >>> od[‘y‘] = 2 >>> od[‘x‘] = 3 >>> od.keys() # 按照插入的Key的順序返回 [‘z‘, ‘y‘, ‘x‘]
2.defaultdict: 帶有默認值的字典
有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],將所有大於
66
的值保存至字典的第一個key中,將小於
66
的值保存至第二個key的值中。
from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value>66: my_dict[‘k1‘].append(value) else: my_dict[‘k2‘].append(value)View Code
另外他可以直接引用,不需要重新定義key
>>> fromcollections import defaultdict >>> dd = defaultdict(lambda: ‘N/A‘) >>> dd[‘key1‘] = ‘abc‘ >>> dd[‘key1‘] # key1存在 ‘abc‘ >>> dd[‘key2‘] # key2不存在,返回默認值 ‘N/A‘
3)collections模塊:Counter類的目的是用來跟蹤值出現的次數。它是一個無序的容器類型,以字典的鍵值對形式存儲,其中元素作為key,其計數作為value。計數值可以是任意的Interger(包括0和負數)。Counter類和其他語言的bags或multisets很相似。
c = Counter(‘abcdeabcdabcaba‘) print c 輸出:Counter({‘a‘: 5, ‘b‘: 4, ‘c‘: 3, ‘d‘: 2, ‘e‘: 1})
它算出所有的值,最後都會變成字典。
集合妙用的收集