collections模块 常用的内置数据结构

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,则输出为[]

常用的数据结构也就这五种,有时候还可以通过这些内置的结构去实现其他的一些数据结构,如:栈,队列等.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值