(1)collections模块 (翻译:收藏)
在内置数据类型(dict,list,set,tuple)的基础上,collections模块还提供了几个额外的数据类型:counter,deque,
defaultdict,namedtuple和OrderedDict等。
1. namedtuple:生成可以使用名字来访问元素内容的tuple
from collections import namedtuple #创建一个元祖
point = namedtuple('point',['x','y']) #两个地方point可以不一样
weo = point(1,2)
print(weo.x)
#结果
# 1
print(weo.y)
#结果
# 2
2. deque:双端队列,可以快速的从另外一侧追加和推除对象(插入的时候,最好是最前面 或 最后面插入数据,
这样效率会更高)
from collections import deque
q = deque(['a','b','c'])
q.append('x') #从后面加入一个值
q.appendleft('y') #从左侧加入一个值
print(q)
# deque(['y', 'a', 'b', 'c', 'x'])
print(q.pop()) #取最后一个值, popleft --取最前面一个值
#结果
x
print(q)
#结果
deque(['y', 'a', 'b', 'c', 'x'])
3. Counter:计算器,主要用来计数
c = Counter('abcdacbdadcdacbsd')
print(c) #计算a ,b ,c,d 出现几次
counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,
其计数作为value。计数值可以是任意的lnterger(包括0和负数)。counter类和其他语音的bags或multisete很相似。
4. OrderedDict:有序字典
import collections
d = collections.OrderedDict()
d['电脑'] = 10000
d['苹果'] = 10
print(d)
for i in d:
print(i,d[i]) #不管怎么打印都是有序的字典
print(d['电脑']) #直接可以取值电脑的价格
5. defaultdict:带有默认值的字典
from collections import defaultdict
#等于 import defaultdict defaultdict.sleep()
l = [11,22,33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)
# #默认这个字典的value是一个空列表
for value in l:
if value > 66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)
下面解答
d = {}
my_dict['a'].append(1)
my_dict['b'].append(2)
my_dict['b'] = 10 #如果有默认的值,就是你赋默认值
print(my_dict)
输出结果
defaultdict(<class 'list'>, {'a': [1], 'b': 10})