Python学习之路--collections模块

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)
View Code
Card = namedtuple('card',['suits','number'])
c1 = Card('红桃',3)
print(c1)
print(c1.number)
print(c1.suits)
# card(suits='红桃', number=3)
#  3
#  红桃
View Code

 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
View Code

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}
View Code

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
View Code

猜你喜欢

转载自www.cnblogs.com/rssblogs/p/10953968.html