python常用的内建模块-collections

python常用的内建模块

1.collections(容器)模块

主要数据类型

  • namedtuple:生成使用名字来访问元素内容迭代元组子类。是元组的增强版。
  • deque:双向队列,可以从另一边添加和弹出元素。是列表的有效补充。
  • OrderedDict:有序字典。字典排序功能的定制版
  • defaultdict:带有默认值的字典。
  • Counter:计数器,针对某些数据类型(如列表,元组等)中的元素进行计数。

namedtuple 命名版的元组

from collections import namedtuple
point=namedtuple("point",["x","y"])  
#namedtuple的构造需要两个参数,元组子类的名字(point)和其属性的名字。多个属性用[]括起来
p=point(3,4)
print(p.x)
print(p.y)

在这里插入图片描述

  • namedtuple加工出来的类依旧是元组的子类
  • 在In2中,对象P是point定义出来的。可以用python的内置函数isinstance()。
  • 该函数的功能是判断一个对象是否为一个已知类型的实例。
isinstance(p,point)   #p是否是类point的实例
isinstance(p,tuple)    #p是否是元组tuple的实例

在这里插入图片描述

namedtuple也可以进行索引

print(p[0])
print(p[1])

在这里插入图片描述

namedtuple也可以将包含多个元素的对象一次性的赋值给多个简单变量。

a,b=p
print(a)
print(b)

在这里插入图片描述

deque双向队列

  • 列表按顺序很慢。为了实现列表的高效插入和删除操作
from collections import deque
dq=deque(["a","b","c"])
dq.append(1)   #往队列的右边添加一个元素
print(dq)   #验证
dq.appendleft(2)  #往队列的左边插入一个元素
print(dq)  #验证
dq.insert(2,"u")  #在指定2位置插入元素“u”
print(dq)   #验证
dq.pop()   #弹出最右边的一个元素,并删除
print(dq)   #验证
dq.popleft()   #弹出最左边的一个元素,并删除
print(dq)   #验证
dq.remove("u") #删除指定元素“u”
print(dq)
dq.reverse()   #逆序
print(dq)   #验证

在这里插入图片描述

OrderedDict 有序字典

  • 普通字典是无序的,只靠键值对。
  • 有序字典底层是通过双向链表实现的。
  • 内部通过map()函数对指定重点序列做映射。
from collections import OrderedDict
od=OrderedDict()
od["a"]=1
od["d"]=3
od["o"]=2
print(od)  
 #“键”是按照元素插入顺序排列的,而不是按照键本身排序
print(list(od.keys()))

在这里插入图片描述

  • update() 在旧字典中再追加一个新字典
keys=["aa","bb","cc"]
value=[11,22,33]
od.update(zip(keys,value))
print(od)
#pop()
od.pop("bb")  
#弹出键为“bb”的字典,并删除
print(od)
od.move_to_end("o")  
#将键为“o”的元素移到队尾
print(od)

在这里插入图片描述

defaultdict提供默认值的字典类型defaultdict

  • 使用字典时,如果所引用的键不存在,就会抛出异常,导致程序终值
  • defaultdict提供如果键不存在则返回一个默认值。
from collections import defaultdict
dd=defaultdict(lambda:"N/A")   #设置默认值
dd["key1"]="abc"
print(dd["key1"])
print(dd["key2"])

abc
N/A

Counter 计数器

  • 一般计算
colors=["red","blue","green","red","yellow","orange","blue"]
result={}   #创建空字典
for color in colors:
    if result.get(color)==None:   #如果是字典的新元素
        result[color]=1  #添加新的键值对
    else:
        result[color]+=1   #如果是字典的老元素,则值+1
print(result)

{‘red’: 2, ‘blue’: 2, ‘green’: 1, ‘yellow’: 1, ‘orange’: 1}

  • 用Counter实现一遍
from collections import Counter
colors=["red","blue","green","red","yellow","orange","blue"]
result=Counter(colors)
print(dict(result))
print(result.most_common(2))   
#输出出现频率最高的两个单词,以列表形式显示
print(result.most_common(2)[1][1])

{‘red’: 2, ‘blue’: 2, ‘green’: 1, ‘yellow’: 1, ‘orange’: 1}
[(‘red’, 2), (‘blue’, 2)]
2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值