namedtuple 生成可以使用名字来访问元素内容的tuple
from collections import namedtuple
namedtuple(
typename: str, field_names: Union[str, Iterable[str]],
verbose: bool = ..., rename: bool = ...
)
namedtuple(名称,属性)
from collections import namedtuple Point = namedtuple('point',['x','y','z']) p = Point(1,2,3) print(p.x) print(p.y) print(p) # 1 # 2 # point(x=1, y=2, z=3)
Card = namedtuple('card',['suits','number']) c1 = Card('红桃',3) print(c1) print(c1.number) print(c1.suits) # card(suits='红桃', number=3) # 3 # 红桃
deque 双端队列,可以快速从另外一侧追加和推出对象
队列
import queue
q = queue.Queue()
q.put(10)
q.put(5)
print(q.qsize())
print(q.get())
from collections import deque dq = deque([1,2]) dq.append('a') #从后面放数据 dq.appendleft('b')#从前面放数据 dq.insert(1,3) print(dq.pop()) #从后面取数据 print(dq.popleft()) #从前取数据 # a # b
Counter 计数器,主要用来计数
from collections import Counter
c = Counter('sahdqiuopweedwiuyq')
print(c)
Counter({'d': 2, 'q': 2, 'i': 2, 'u': 2, 'w': 2, 'e': 2,
's': 1, 'a': 1, 'h': 1, 'o': 1, 'p': 1, 'y': 1})
OrderedDict 有序字典
使用dict时,Key是无序的,在对dict做迭代时,无法确定Key的顺序
如果要保持Key的顺序,可以用OrderedDict:
from collections import OrderedDict od = OrderedDict([('a',1),('b',2),('c',3)]) print(od) print(od['a']) d = dict([('a',1),('b',2),('c',3)]) print(d) OrderedDict([('a', 1), ('b', 2), ('c', 3)]) 1 {'a': 1, 'b': 2, 'c': 3}
defaultdict 带有默认值的字典
from collections import defaultdict value = [11,22,33,44,55,66,77,88,99,90] my_dic = defaultdict(list) for i in value: if i>66: my_dic['k1'].append(i) else: my_dic['k2'].append(i) print(my_dic)#defaultdict(<class 'list'>, {'k2': [11, 22, )33, 44, 55, 66], 'k1': [77, 88, 99, 90]} d = defaultdict(lambda :5) print(d['k'])#5