模块:collections,Python中的扩展数据类型

时间:2019-08-28
本文章向大家介绍模块:collections,Python中的扩展数据类型,主要包括模块:collections,Python中的扩展数据类型使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
namedtuple:生成一个可以使用名字来访问的tuple
from collections import namedtuple
point = namedtuple('point',['x','y','z','r'])
p = point(1,2,3,4)
print(p.z)
print(p.x)
print(p.y)
print(p.r)
print(p)

打印:
3
1
2
4
point(x=1, y=2, z=3, r=4)
deque:双队列 一个可迭代的 取一个少一个 只能从最前面或者最后面取,可以从最前面、最后面添加,可以插队添加

from collections import deque
lis = deque([1,2,3])
lis.append(0) #从最前面添加一个元素
lis.appendleft(4) #从最后面添加一个元素
print(lis.pop())#取出最前面的一个元素
print(lis.popleft())#取出最后面的一个元素
lis.insert(3,'a')#指定位置添加一个元素
print(lis)

print('__iter__' in dir(deque))#可迭代的

for i in lis:
    print(i)

打印:
0
4
deque([1, 2, 3, 'a'])
True
1
2
3
a
 
counter:计算次数 参数为可迭代的 返回元素出现的次数
from collections import Counter
number = Counter([1,1,1,2,1,2,1,3,3,4,5,1,4])
print(number)

#打印:
Counter({1: 6, 2: 2, 3: 2, 4: 2, 5: 1})
defaultdict:带默认值的字典 使用正常下的字典时时,如果引用的Key不存在,就会抛出KeyError。defaultdict可以设置默认值,如果key不存在,会给他一个设定的默认值
from collections import defaultdict
lis = defaultdict(lambda :'默认空的值')
lis['key']
print(lis)

#打印:
defaultdict(<function <lambda> at 0x0000026D959C8048>, {'key': '默认空的值'})


# 例子:有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

from collections import defaultdict
lis = [11,22,33,44,55,66,77,88,99,90]
new_lis = defaultdict(list)
for i in lis:
    if i > 66:
        new_lis['k1'].append(i)
    else:
        new_lis['k2'].append(i)
print(new_lis)

#打印:
defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})
OrderedDict:有序字典
from collections import OrderedDict
dic1 ={('a', 1), ('b', 2), ('c', 3), ('e', 4), ('d', 5)}
print(dic1)#无序的

dic = OrderedDict()
dic['a'] = 1
dic['b'] = 2
dic['c'] = 3
dic['e'] = 4
dic['d'] = 5
print(dic) #有序的 Key会按照插入的顺序排列,不是Key本身排序

#打印:
{('e', 4), ('a', 1), ('d', 5), ('b', 2), ('c', 3)}
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('e', 4), ('d', 5)])

原文地址:https://www.cnblogs.com/aizhinong/p/11424641.html