collections模块(python中的扩展数据类型)
Posted 20181013python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了collections模块(python中的扩展数据类型)相关的知识,希望对你有一定的参考价值。
#列表、元祖 #字典 #集合、frozenset #字符串 #堆栈 : 先进后出 #队列 :先进先出 FIFO #坐标 from collections import namedtuple Point = namedtuple(‘point‘,[‘x‘,‘y‘,‘z‘]) p1 = Point(1,2,3) p2 = Point(3,2,1) print(p1.x) print(p1.y) print(p1,p2) #花色和数字 Card = namedtuple(‘card‘,[‘suits‘,‘number‘]) c1 = Card(‘红桃‘,2) print(c1) print(c1.number) print(c1.suits) #队列 import queue q = queue.Queue() q.put([1,2,3]) q.put(5) q.put(6) print(q) print(q.get()) print(q.get()) print(q.get()) print(q.get()) # 阻塞 print(q.qsize()) #双端队列 from collections import deque dq = deque([1,2]) dq.append(‘a‘) # 从后面放数据 [1,2,‘a‘] dq.appendleft(‘b‘) # 从前面放数据 [‘b‘,1,2,‘a‘] dq.insert(2,3) #[‘b‘,1,3,2,‘a‘] print(dq.pop()) # 从后面取数据 print(dq.pop()) # 从后面取数据 print(dq.popleft()) # 从前面取数据 print(dq) #有序字典 from collections import OrderedDict od = OrderedDict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)]) print(od) # OrderedDict的Key是有序的 print(od[‘a‘]) for k in od: print(k) from collections import defaultdict d = defaultdict(lambda : 5) print(d[‘k‘]) #有序字典 defaultdict # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 # # 即: {‘k1‘: 大于66 , ‘k2‘: 小于66} values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = {} for value in values: if value>66: if my_dict.has_key(‘k1‘): my_dict[‘k1‘].append(value) else: my_dict[‘k1‘] = [value] else: if my_dict.has_key(‘k2‘): my_dict[‘k2‘].append(value) else: my_dict[‘k2‘] = [value] from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value>66: my_dict[‘k1‘].append(value) else: my_dict[‘k2‘].append(value) #使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict: from collections import defaultdict dd = defaultdict(lambda: ‘N/A‘) dd[‘key1‘] = ‘abc‘ dd[‘key1‘] # key1存在 #‘abc‘ dd[‘key2‘] # key2不存在,返回默认值 #‘N/A‘ #Counter # #Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。 # c = Counter(‘abcdeabcdabcaba‘) # print c # Counter({‘a‘: 5, ‘b‘: 4, ‘c‘: 3, ‘d‘: 2, ‘e‘: 1})
以上是关于collections模块(python中的扩展数据类型)的主要内容,如果未能解决你的问题,请参考以下文章