collections模块
- 在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型: Counter、deque、defaultdict、namedtuple和OrderedDict等。
1. namedtuple (具名元组)
from collections import namedtuple
'''
具名元组就是给名字+元组 使用方式如下
namedtuple('名称',['名字1','名字2'])
namedtuple('名称','名字1 名字2')
用途: 用在用处
'''
point = namedtuple('坐标', ['x', 'y'])
point1 = namedtuple('坐标', 'x y')
print(point(22, 33))
print(point1(44, 55))
point2 = namedtuple('坐标', ['x', 'y', 'z'])
point3 = namedtuple('坐标', ['x', 'y', 'z'])
print(point2(11, 22, 33))
22, z=33)
print(point3(44, 55, 66))
2. queue队列
队列模块 : 单独的模块
import queue
q = queue.Queue()
q.put('first')
q.put('second')
q.put('third')
print(q.get())
print(q.get())
print(q.get())
如过队列中元素被取完了,程序就会一直待机,直到队列里面添加新的元素被取出为止
queue.empty()
3. deque(双端队列)
from collections import deque
'''
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
'''
q = deque([11,22,33])
q.append(44)
print(q)
q.appendleft(55)
print(q)
print(q.pop())
print(q.popleft())
4. OrderdDict (有序字典)
- 使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
- 如果要保持Key的顺序,可以用
OrderedDict
from collections import OrderedDict
order_dict = OrderedDict([('name', 'tom'), ('age', 18), ('sex', 'male')])
print(order_dict)
order_dict['hight'] = '175'
print(order_dict)
5. defaultdict(默认值字典)
- 使用
dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
:
from collections import defaultdict
values = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
my_dict = defaultdict(list)
for value in values:
if value>60:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)
print(my_dict)
6. Counter (计数)
- Counter类的目的是用来跟踪值出现的次数。他是一个无序的容器类型,以字典的键值对形式存储,其中元素作为Key,其计数作为value。计数值可以是任意的Interger(包括0和负数res = ‘abcdeabcdabcaba’)
res = 'abcdeabcdabcaba'
from collections import Counter
ret = Counter(res)
print(ret)