Python语言入门7.3-内建模块collections
小标 2018-06-20 来源 : 阅读 754 评论 0

摘要:在Python语言入门中,Python的内建模块collections为我们提供了一系列的优化操作,本质上就是元组、字典、集合、列表的特殊功能版。希望对大家学习Python语言入门有所帮助。

在Python语言入门中,Python的内建模块collections为我们提供了一系列的优化操作,本质上就是元组、字典、集合、列表的特殊功能版。希望对大家学习Python语言入门有所帮助。

1. namedtuple

namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。需要注意的是它返回的是一个数据类型。

from collections import namedtuple
 
People = namedtuple('People', ['name', 'age', 'sex'])
 
libai = People('libai', '22', 'male')
print(libai)
print(libai.name)
 
print(isinstance(libai, People))
打印结果:
People(name='libai', age='22', sex='male')
libaiTrue

2. deque

从字面上看出来,deque就是一个队列,不过它是双向的,也就是能从两端添加元素。 
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:

from collections import deque
 
d = deque(['1', '2', '3'])
print(d.pop())
print(d.popleft())
d.append('5')
d.appendleft('6')
print(d)
打印结果:
3
1deque(['6', '2', '5'])

从结果可以看出,它是一个双向队列。

3. defaultdict

from collections import defaultdict
dict = defaultdict(lambda: None)
print(dict)
dict['key1'] = 'hhhh'
 
print(dict['key2'])

key2 这个键值本来是不存在的呢,如果是普通的字典,就会报错,但是用了defaultdict就会返回一个默认值。 
注意默认值是调用函数返回的,而函数在创建defaultdict对象时传入。

除了在Key不存在时返回默认值,defaultdict的其他行为跟dict是完全一样的。

4. OrderedDict

究其本意,有序字典。在普通字典中, 字典keys是没有顺序的,在对dict做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict。所谓顺序是指key插入的顺序,也就是谁先插入谁就在前面。

from collections import OrderedDict
dict = OrderedDict()
dict['key1'] = 'a'
dict['key2'] = 'b'
print(dict)
print(dict.keys())
打印结果:
OrderedDict([('key1', 'a'), ('key2', 'b')])
odict_keys(['key1', 'key2'])

5. Counter

Counter是一个简单的计数器,统计字符出现的个数:

from collections import Counter
 
a = ['a', 'f', 'ffff', 'f']
print(Counter(a))
print(Counter(a)['f'])
打印结果:
Counter({'f': 2, 'a': 1, 'ffff': 1})
2

从打印的结果来看,Counter其实是一个字典类型,keys是统计的元素,values是出现的次数

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程