""
collection 模块
首先 在学习这个模块之前我们还学习过其他的
整形
浮点型
字符串
列表
字典
元祖
集合
布尔值
而 collection模块也是其中之一 增加了解
具名元祖
想表示坐标点x为1 y 为2的坐标
"""
# from collections import namedtuple
# point = namedtuple("坐标",["x","y","z"]) #第二个参数也可以穿可迭代对象
# # point = namedtuple("坐标","x y z") #也可以穿字符串 但是字符串 之间要用空格隔开
# p = point(10,2,2)# 注意 元素的个数必须和namedtuple 第二个参数里面的值 数量一致
# print(p)
# #结果 坐标(x=10, y=2, z=2)
# print(p.y) #在打印的时候再次调用namedtuple 第二个值里面的参数 可以直接打印出所对应的值
# #结果 2
#
# #队列 :先进先出(FIFO)这这个字母代表着F = first ,I = in,F = first, O = out
# import queue
# q = queue.Queue() # 生成队列对象
# q.put("first") # 往队列里面添加值
# q.put("jason")
# q.put("jason2")
# print(q.get()) # 往队列里面要值
# print(q.get())
# print(q.get()) #如果队列里面的值取完了 他就会等着你 直到拿到值了才会停止 且不会报错
""" 打印结果遵循 先进先出 的原则
结果:first
jason
jason2
"""
"""
deque 双端队列 那么意思就是可以在两边进在两边出
"""
# from collections import deque
# q = deque (["a","b","c"])
# #append 尾部添加
# #appendleft 开始添加
# #pop 尾部取值
# #popleft 开始取值
#
# q.append(1)
# print(q)
# #结果:deque(['a', 'b', 'c', 1]) 尾部添加
# q.appendleft(2)
# print(q)
# #结果:deque([2, 'a', 'b', 'c', 1]) 开始添加
"""
队列不应应该支持任意位置插值
只能在首尾插值(不能插队)
特点:说是特点也可以是缺点 双端队列可以根据所以在任意位置插值
"""
from collections import OrderedDict #有序字典
# order_d = OrderedDict ([("a",1),("b",2),("c",3)])
# print(order_d)
#结果:OrderedDict([('a', 1), ('b', 2), ('c', 3)])
#可以支持 print(order_d["a")索引取值
# order_d1 = OrderedDict()
# order_d1["x"] = 1
# order_d1["q"] = 2
# order_d1["w"] = 3
# print(order_d1)
#结果:OrderedDict([('x', 1), ('q', 2), ('w', 3)])
# 支持直接添加值 索引取值
# from collections import defaultdict
# # defaultdict 带有默认值的字典
#
# my_dict = defaultdict(list) #后续该字典中新建的key对应的value默认就是列表
# print(my_dict["aaa"]) #打印表示一个空的列表
# #结果:[]
# values = [11,22,33,44,55,66,77,88,99,]
# for values in values:
# if values>66:
# my_dict['k1'].append(values)
# else:
# my_dict["k2"].append(values)
# print(my_dict)
#结果:defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99]})
# my_dict1 = defaultdict(int) #转成整形
# print(my_dict1['xxx'])
# print(my_dict1['yyy'])
#
# my_dict2 = defaultdict(bool) #转换布尔值 返回一个 False
# print(my_dict2['kkk'])
# #
# my_dict3 = defaultdict(tuple)
# print(my_dict3['mmm']) # 转换一个空元组的()
from collections import Counter
s = "qwfscdfesfdqw"
# res = Counter(s)
# print(res)
#结果返回({'f': 3, 'q': 2, 'w': 2, 's': 2, 'd': 2, 'c': 1, 'e': 1})
#统计 s 内的相同的值有多少个并以字典的形式返回
# for i in res:
# print(i)
# 因为 这时候额res 已经被转变成一个字典所以得到的值 值有k
d = {}
for i in s:
d[i] = 0
print(d)
改变 i 的里面v的值 返回的 也是以字典形式返回 但是每个值对应的是0