collections 模块 字典

""
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
原文地址:https://www.cnblogs.com/yangxinpython/p/11209133.html