python3之模塊collections


1.計數器(counter)

counter是對字典的方法,用來追蹤值的出現次數;具備字典的所有功能和自己的功能。

>>> from collections import Counter
>>> d2 = Count
>>> d2 = Counter('abbcccddd')  #對值計數
>>> print(d2)
Counter({'d': 3, 'c': 3, 'b': 2, 'a': 1})
>>> print(type(d2))
<class 'collections.Counter'>
>>> d2 = Counter('abbcccddd')
>>> for i in d2.elements():    #計數元素迭代器
...   print(i)
... 
b
b
a
d
d
d
c
c
c
>>> d2.clear()   #清空元素
>>> print(d2)
Counter()

>>> d3 = d2.copy()  #拷貝
>>> d3
Counter({'d': 3, 'c': 3, 'b': 2, 'a': 1})

>>> d2.update('ddffffff')   #更新
>>> d2
Counter({'f': 6, 'd': 5, 'c': 3, 'b': 2, 'a': 1})

>>> d2.subtract('fffff')  #減去元素個數
>>> d2
Counter({'d': 5, 'c': 3, 'b': 2, 'a': 1, 'f': 1})

>>> d4 = d2.pop('f')  #提取dict的key
>>> d4
1
>>> d2
Counter({'d': 5, 'c': 3, 'b': 2, 'a': 1})

2、有序字典(OrderedDict)

OrderedDict是對字典的補充,它可以記住字典元素添加的順序。

>>> from collections import OrderedDict
>>> dic1 = OrderedDict({'k1':'v1','k2':'v2','k4':'v4','k3':'v3'})
>>> dic1    #創建有序列的字典
OrderedDict([('k4', 'v4'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
>>> print(type(dic1))
<class 'collections.OrderedDict'>
>>> dic1.popitem()    #默認提取最后要給key
('k3', 'v3')
>>> dic1
OrderedDict([('k4', 'v4'), ('k1', 'v1'), ('k2', 'v2')])
>>> dic1.move_to_end('k4')   #將指定key移到最后
>>> dic1
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k4', 'v4')])

3、默認字典(defaultdict)

defaultdict是對字典的類型補充,它默認給字典的值設置了一個類型

>>> from collections import defaultdict
>>> dict1 = defaultdict(list)   #創建默認字典
>>> dict1
defaultdict(<class 'list'>, {})
>>> print(type(dict1))
<class 'collections.defaultdict'>
>>> for i in range(20):  #實例
...   if i%2 == 0:
...     dict1['k1'].append(i)
...   else:
...     dict1['k2'].append(i)
... 
>>> dict1
defaultdict(<class 'list'>, {'k1': [0, 2, 4, 6, 8, 10, 12, 14, 16, 18], 'k2': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]})

4、可命名元組(namedtuple)

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

>>> from collections import namedtuple
>>> tup1 = namedtuple('tup1',['x','y','z','u'])  #創建可命名元組
>>> obj = tup1(111,22,333,4444)  #創建對象
>>> print(obj.x)   #輸出對象序列的值
111
>>> print(obj.y)
22
>>> print(obj.z)
333
>>> print(obj.u)
4444

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM