Python擁有一些內置的數據類型,比如str, int, list, tuple, dict等, collections模塊在這些內置數據類型的基礎上,提供了幾個額外的數據類型:
- namedtuple(): 生成可以使用名字來訪問元素內容的tuple子類
- deque: 雙端隊列,可以快速的從另外一側追加和推出對象
- Counter: 計數器,主要用來計數
- OrderedDict: 有序字典
- defaultdict: 帶有默認值的字典
OrderedDict
在Python中,dict這個數據結構由於hash的特性,是無序的,這在有的時候會給我們帶來一些麻煩, 幸運的是,collections模塊為我們提供了OrderedDict,當你要獲得一個有序的字典對象時,用它就對了。
# -*- coding: utf-8 -*- from collections import OrderedDict items = ( ('A', 1), ('B', 2), ('C', 3) ) regular_dict = dict(items) ordered_dict = OrderedDict(items) print 'Regular Dict:' for k, v in regular_dict.items(): print k, v print 'Ordered Dict:' for k, v in ordered_dict.items(): print k, v # Result: Regular Dict: A 1 C 3 B 2 Ordered Dict: A 1 B 2 C 3
在神經網絡中添加模塊:
self.features = nn.Sequential(OrderedDict([ ('conv0', nn.Conv2d(3, num_init_features, kernel_size=7, stride=2, padding=3, bias=False)), ('norm0', nn.BatchNorm2d(num_init_features)), ('relu0', nn.ReLU(inplace=True)), ('pool0', nn.MaxPool2d(kernel_size=3, stride=2, padding=1)), ]))
參考:
[1] 不可不知的Python模塊: collections https://www.zlovezl.cn/articles/collections-in-python/