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})

 

posted @   新兵蛋Z  阅读(327)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
阅读排行:
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?
点击右上角即可分享
微信分享提示