1. collections是python内置的一个集合模块。提供了许多有用的集合类。
2. namedtuple
2.1 namedtuple是collections模块中的一个函数。
2.2 创建出来的是自定义的tuple对象。
2.3 可以通过属性来访问自定义tuple的某个元素。
2.4 示例:
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) # 自定义了一个Point类,该类是tuple的子类。 p = Point(12, 33) # p是Point类的对象。
3. deque
3.1 双向list。除了实现了list的append和pop方法外,还支持appendleft和popleft方法,可以实现在list头部添加和删除元素。
3.2 示例:
from collections import deque ll = deque(['a', 'b', 'c']) # 创建deque类的实例ll。deque类不是list的子类。 ll.appendleft('d') ll.append('e') # ll is ['d', 'a', 'b', 'c', e]
4. defaultdict
4.1 示例:
from collections import defaultdict dd = defaultdict(lambda : "N/A") # 创建defaultdict类的实例dd。defaultdict类是dict类的子类。 dd['k1'] = 'v1' dd['k2'] = 'v2' print(dd['k3']) # k3这个key是不存在的,输出:N/A
4.2 使用dict时,如果访问的key不存在,则会报KeyError错误。
4.3 使用defaultdict时,如果访问的key不存在,则会输出默认值;默认值是创建defaultdict类的实例时,传入的函数的返回值。
5. OrderedDict
5.1 使用dict时,key是无序的。
5.2 使用OrderedDict时,key是按照插入的顺序排序的。
6. Counter
6.1 Counter是dict的子类。
6.2 Counter是一个计数器。
6.3 示例:
from collections import Counter cc = Counter() for ch in 'abbcccdddd': cc[ch] = cc[ch] + 1 # 统计字符出现的次数。 print(cc) # 输出:{'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}