python开发模块基础:collections模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python开发模块基础:collections模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2685字,纯文字阅读大概需要4分钟。
内容图文
一,collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典
1 # !/usr/bin/python env 2 # _*_coding:utf-8_*_ 3 4 # 1.namedtuple (重点) 5 from collections import namedtuple 6 Ponit = namedtuple(‘Ponit‘,[‘x‘,‘y‘,‘z‘]) 7 p = Ponit(1,2,5) 8print(p.x) 9print(p.y) 10print(p.z) 1112# 2.deque13‘‘‘14使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低 15deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈: 16‘‘‘17from collections import deque 18 q = deque([‘a‘, ‘b‘, ‘c‘]) 19 q.append(‘x‘) 20 q.appendleft(‘y‘) 21# print(q)22#deque([‘y‘, ‘a‘, ‘b‘, ‘c‘, ‘x‘])23# deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素2425# 3.OrderedDict (重点)消耗内存26‘‘‘27使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。 28如果要保持Key的顺序,可以用OrderedDict: 29‘‘‘30from collections import OrderedDict 31 d = dict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)]) 32print(d) 33#d dict的Key是无序的34#{‘a‘: 1, ‘c‘: 3, ‘b‘: 2}35 od = OrderedDict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)]) 36print(od) 37#od OrderedDict的Key是有序的38#OrderedDict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)])3940# 注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序41 od = OrderedDict() 42 od[‘z‘] = 1 43 od[‘y‘] = 2 44 od[‘x‘] = 3 45 od.keys() # 按照插入的Key的顺序返回46#[‘z‘, ‘y‘, ‘x‘]4748# 4.defaultdict (重点)(带默认的字典,就是当这个)49# 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。50# 普通代码,需要判断这个key,vales存在不存在51 values = [11, 22, 33,44,55,66,77,88,99,90] 52 my_dict = {} 53for value in values: 54if value>66: 55if my_dict.has_key(‘k1‘): 56 my_dict[‘k1‘].append(value) 57else: 58 my_dict[‘k1‘] = [value] 59else: 60if my_dict.has_key(‘k2‘): 61 my_dict[‘k2‘].append(value) 62else: 63 my_dict[‘k2‘] = [value] 6465# 使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:66# 进阶版本 会给返回默认的参数,用了匿名函数的原理67from collections import defaultdict 68 values = [11, 22, 33,44,55,66,77,88,99,90] 69 my_dict = defaultdict(list) 70for value in values: 71if value>66: 72 my_dict[‘k1‘].append(value) 73else: 74 my_dict[‘k2‘].append(value) 7576#匿名函数77from collections import defaultdict 78def func(): 79return‘N/A‘80 my_dict = defaultdict(func) 81print(my_dict[‘k‘]) 8283# 5.Counter84# Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。85from collections import Counter 86 c = Counter(‘abcdeabcdabcaba‘) 87print(c) 88# 输出:Counter({‘a‘: 5, ‘b‘: 4, ‘c‘: 3, ‘d‘: 2, ‘e‘: 1})89# http://www.cnblogs.com/Eva-J/articles/7291842.html
原文:http://www.cnblogs.com/jokerbj/p/7327903.html
内容总结
以上是互联网集市为您收集整理的python开发模块基础:collections模块全部内容,希望文章能够帮你解决python开发模块基础:collections模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。