python模块之collections模块

  collections模块

  提供了一些额外的数据类型,供我们使用。

  namedtuple:命名元组

from collections import namedtuple
# 命名元组 namedtuple(typename, field_names) typename元组的名称  field_names元组中元素的名称
ret = namedtuple('zxc', ['x', 'y'])
print(ret)  # <class '__main__.zxc'>
p = ret(1, 2)  # 按顺序添加元素
p1 = ret(x=3, y=4)  # 按名称添加元素
print(p)    # zxc(x=1, y=2)
print(p1)    # zxc(x=3, y=4)
print(p.x)  # 1
print(p.y)  # 2

  

  deque:双向队列

  介绍双向队列之前,先说明一下队列是什么。队列是一种先进先出的数据结构,先放进去的要先取出。

import queue
q = queue.Queue()
q.put(1)    # put 给队列中添加元素
q.put(2)
q.put(3)
print(q.get())  # get 取出队列中的元素
print(q.get())
print(q.get())
print(q.qsize())  # 获取当前队列的元素个数
队列

   双向队列就是可以在前或后进行添加和取出操作的队列,原则也是一样,先进先出。

from collections import deque
# deque 双向队列
dp = deque()   # 双向队列 前后都可以添加元素
dp.appendleft('')   # 在队列前面添加元素
dp.append('')       # 在队列后面添加元素
print(dp)  # deque(['前', '后'])
print(dp.popleft())  # 相当于print(dp[0])   # 在队列前面取元素
print(dp.pop())  # 相当于print(dp[-1])     # 在队列后面添加元素
print(dp.index(''))   # 获取队列中某元素的索引 不存在报错

  OrderedDict:有序字典

from collections import OrderedDict
# OrderedDict 有序的字典
Od = OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
print(Od)  # OrderedDict([('k1', 'v1'), ('k2', 'v2')])
print(Od.get('k1'))  # 相当于print(Od['k1'])
for k in Od:   # 循环打印键  有序
    print(k)

  defaultdict:默认字典

from collections import defaultdict
# 默认字典 在字典还没有添加键值对时,就指定了默认值,添加的键在不赋值的情况下使用默认值
dic = defaultdict(list)  # 参数必须是可调用的对象
dic1 = defaultdict(lambda: 3)
print(dic['k1'])  # []
print(dic1['key'])  # 3
dic['k2'].append(1)
dic['k3'] = 'v3'   # 直接赋值就不使用默认值
print(dic)  # defaultdict(<class 'list'>, {'k1': [], 'k2': [1], 'k3': 'v3'})
原文地址:https://www.cnblogs.com/zxc-Weblog/p/8275999.html