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中的扩展数据类型)的主要内容,如果未能解决你的问题,请参考以下文章

Python: collections模块实例透析

《Python》常用模块之collections模块

python中的各个模块

Python笔记五(collections模块)

Python中collections模块中的Counter()类

Python中的collections模块