Python——collections(集合模块)
集合类常用模块
在内置数据类型(dict,list,str,tuple)的基础上,collections模块还提供了几个额外的数据类型。
deque:
双端队列,可以快速的从另一侧追缴和推出对象。
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低,deque是为了搞笑实现插入和删除操作的双向列表,适合用于队列和栈。
1 2 3 4 5 6 7 8 | from collections import deque q = deque([ 'a' , 'b' , 'c' , 'd' ]) q.append( 'x' ) #在最后插入 q.appendleft( 'y' ) #在最前插入 print (q) #deque(['y', 'a', 'b', 'c', 'd', 'x']) 数据输出为deque类型。 data = q.popleft() #删除第一个并返回值 data1 = q.pop() #删除最后一个并返回值 |
namedtuple
可命名元组:
为了方便定义元组后的调取问题,可以使用key,vlaue的方式来进行。同时还具有元组的不可改变性。
后台:1.创建一个类,2. 这个类没有方法 3. 所有属性值不能修改。
1 2 3 4 5 6 | from collections import namedtuple Course = namedtuple( 'course' ,[ 'name' , 'price' , 'teacher' ]) python1 = Course( 'python' , 19999 , 'python1' ) print (python1) |
OrderedDict:
有序字典:使字典有序化。
1 2 3 4 5 6 | import collections data_dict = collections.OrderedDict([( '1' , 1 ),( '2' , 2 ),( '3' , 3 )]) print (data_dict) #OrderedDict([('1', 1), ('2', 2), ('3', 3)]) for k,y in data_dict.items(): print (k,y) # 1 1 2 2 3 3 |
DefaultDict:
默认值字典:
正常情况下,字典内如果没有取的值,将会报KeyError的错误,在使用默认值字典后,如果不存在将会返回预设定的默认值。
1 2 3 4 5 | from collections import defaultdict dd = defaultdict( lambda : 'N/A' ) dd[ 'key1' ] = 'abc' print (dd[ 'key1' ]) # key1存在 print (dd[ 'key2' ]) # key2不存在,返回默认值N/A |
实例:
将大于66的和小于66的分别放入到两个value中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # ---------------正常写法------------------- lis = [ 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88 , 99 , 90 , 98 , 76 ] result = {} for i in lis: if i > 66 : if 'key1' not in result: result[ 'key1' ] = [] result[ 'key1' ].append(i) else : if 'key2' not in result: result[ 'key2' ] = [] result[ 'key2' ].append(i) print (result) # ------------使用defaultdict写法------------ from collections import defaultdict lis = [ 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88 , 99 , 90 , 98 , 76 ] my_dict = defaultdict( list ) # 会生成一个空的list和一个空字典。defaultdict(<class 'list'>, {}) print (my_dict) #defaultdict(<class 'list'>, {}) for i in lis: if i> 66 : my_dict[ 'key1' ].append(i) else : my_dict[ 'key2' ].append(i) print (my_dict) #如果key1在字典里那么就添加,如果不在那么就新增一个key。 |
Counter
目的是用来跟踪值出现的次数,它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的interger(包括0和负数)
1 2 3 4 | from collections import Counter c = Counter( '123123123123' ) print (c) #Counter({'1': 4, '2': 4, '3': 4}) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)