python之collections模块

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))  # 坐标(x=22, y=33)
print(point1(44, 55))  # 坐标(x=44, y=55)
point2 = namedtuple('坐标', ['x', 'y', 'z'])
point3 = namedtuple('坐标', ['x', 'y', 'z'])
print(point2(11, 22, 33))  # 坐标(x=11, y=
22, z=33)
print(point3(44, 55, 66))  # 坐标(x=44, y=55, z=66)

在这里插入图片描述

2. queue队列

队列模块 : 单独的模块
import queue  # 内置队列模块:FIFO
# 初始化队列
q = queue.Queue()
# 添加元素
q.put('first')
q.put('second')
q.put('third')
# 获取元素
print(q.get())  # first
print(q.get())  # second
print(q.get())  # third
如过队列中元素被取完了,程序就会一直待机,直到队列里面添加新的元素被取出为止
queue.empty()  # 队列为空时返回True

3. deque(双端队列)

from collections import deque
'''
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
'''
q = deque([11,22,33])
q.append(44)
print(q)  # deque([11, 22, 33, 44])
q.appendleft(55)
print(q)  # deque([55, 11, 22, 33, 44])
print(q.pop())  # 44
print(q.popleft())  # 5

在这里插入图片描述

4. OrderdDict (有序字典)

  • 使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
  • 如果要保持Key的顺序,可以用OrderedDict
from collections import OrderedDict

order_dict = OrderedDict([('name', 'tom'), ('age', 18), ('sex', 'male')])
print(order_dict)  # OrderedDict([('name', 'tom'), ('age', 18), ('sex', 'male')])
order_dict['hight'] = '175'
print(order_dict)  # OrderedDict([('name', 'tom'), ('age', 18), ('sex', 'male'), ('hight', '175')])

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)  # defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55], 'k1': [66, 77, 88, 99, 90]})

在这里插入图片描述

6. Counter (计数)

  • Counter类的目的是用来跟踪值出现的次数。他是一个无序的容器类型,以字典的键值对形式存储,其中元素作为Key,其计数作为value。计数值可以是任意的Interger(包括0和负数res = ‘abcdeabcdabcaba’)
res = 'abcdeabcdabcaba'
from collections import Counter
ret = Counter(res)
print(ret)  # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go&Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值