from collections import defaultdict
# 使用dict时,如果引用的key不存在,会抛出KeyError异常。如果希望key不存在时,能得到一个默认的值,就使用defaultdict
d1 = {"a":1, "b":2, "c":3}
# print(d1["d"])
print(d1.get("d"))
d2 = defaultdict(lambda :"good")
d2["a"] = 1
print(d2)
print(d2["a"])
print(d2["d"])
print(d2.get("d"))
from collections import OrderedDict
#使用dict时,key是无序的。对dict做迭代时无法保证key的顺序。如果需要key有顺序,就可以使用OrderdDict
d1 = {"a":1, "b":2, "c":3}
print(d1)
# 顺序是按照键值对插入的顺序
d2 = OrderedDict([("a",[11, 111]),("c",33),("b",22)])
print(d2)
print(d2["a"])
print(d2.get("a"))
from collections import Counter
# 一个简单的计数器,本质上是dict的一个子类
# 计算集合中每个元素出现的次数
a = "sunck is a good man"
c = Counter()
print(c)
for ch in a:
c[ch] = c[ch] + 1
print(c)
from collections import deque
# deque
# 使用list存储数据,按索引访问元素,但是插入和删除元素会根据元素的个数增多而效率降低。因为list是线性存储,数据量大插入和删除效率会低
# deque 就是为了高效实现插入和删除操作的双向列表,适用于队列和栈
q = deque([1,2,3,4,5])
q.append(6)
q.appendleft(0)
q.pop()
q.popleft()
print(q)