python内置模块collections中的数据结构
关于collections模块中常用的数据结构的介绍:
官方文档地址:collections模块
1.元组的子类对象namedtuple()
nametuple对象是一个元组的子类,可以给该对象定义字段名,直接通过字段名就可以访问对象中的元素:
from collections import namedtuple
#定义一个namedtuple对象,需传入两个参数,第一个为typename,'x y'为字段名
t1 = namedtuple('name', 'x y')
t = t1(11, 22) #按照t1这个对象的格式定义元组中的元素
print(t) #返回一个名字为name,元素为11,22的namedtuple对象:name(x=11, y=22)
t.x #通过t.x直接访问对象中的元素: 11
t.y #返回22
2.双端队列对象deque
deque双端队列对象既可以从队列开头插入/删除数据,也可以从队列尾部插入/删除数据:
from collections import deque
q = deque() #创建一个双端队列对象
q.append(1) #从队列尾部添加数据
q.appendleft(3) #从队列开头插入数据
q.pop() #从队列尾部删除一个数据
q.popleft() #从队列开头删除一个数据
3.Counter对象
counter对象是一个字典的字类对象,可以统计传入的序列中各元素出现次数,并返回一个类字典对象:
from collections import Counter
d = Counter('abdhab') #创建一个基于序列对象abdhab的Counter对象
print(d) #输出:Counter({'a': 2, 'b': 2, 'd': 1, 'h': 1})
d.most_common() #该方法返回一个由元组组成的列表对象:[('a', 2), ('b', 2), ('d', 1), ('h', 1)]
4.OrderedDict对象
OrderedDict对象也是一个类字典对象,不过该对象可以记录对象的插入顺序:
from collections import OrderedDict
#创建一个有序字典对象
od = OrderedDict()
#向字典中插入元素
od['a'] = 2
od['c'] = 5
od['d'] = 6
print(od) #返回一个有序字典对象:OrderedDict([('a', 2), ('c', 5), ('d', 6)])
od.move_to_end('a') #指定对象移动到有序字典末尾
print(od) #输出: OrderedDict([('c', 5), ('d', 6), ('a', 2)])
od.popitem(last=False) #删除字典中开头或末尾的一个对象,last=False表示删除开头
print(od) #输出: OrderedDict([('d', 6), ('a', 2)])
5.defaultdict对象
defaultdict对象也是一个类字典对象,该对象可以指定字典中不存在的键的值的默认值:
from collections import defaultdict
#创键一个默认字典对象,int表示默认值的类型,如果是int就是0,list就是[]
dd = defaultdict(int)
print(dd)
#输出: defaultdict(<class 'int'>, {})
print(dd['a'])
#输出0,当访问默认字典中的不存在的键时,会自动默认为0,如果指定了list,则输出为[]
常用的数据结构也就这五种,有时候还可以通过这些内置的结构去实现其他的一些数据结构,如:栈,队列等.