import collections
"""
#命名tuple
#定义一个point对象,让nametuple可读
point = collections.namedtuple('ppp','x,y')
p = point(1,2)
print(p.x,p.y)
"""
"""
#双端队列
queue = collections.deque()
queue.append(1)
queue.append(2)
queue.appendleft(0)#左加
print(queue)
queue.pop()#右边出
queue.popleft()#左边出
"""
"""
#计数器
c = collections.Counter('fgdgdfghradas')
print(c)#Counter({'d': 3, 'g': 3, 'a': 2, 'f': 2, 'h': 1, 's': 1, 'r': 1})
print(c['a'])#2
c.most_common()#以列表包含元组的形式,从大到小获取计数
"""
"""
#记住字典中key插入的顺序
od = collections.OrderedDict()
od['c']= 1
od['b']= 2
od['a']= 3
print(list(od.keys()))
"""
#带有默认值的字典,没能实现
dd= collections.defaultdict()
**利用python内嵌的双端队列来实现LRUcache
**
from collections import OrderedDict
class LRUCache:
def __init__(self,capacity=128):
self.od = OrderedDict()
self.capacity = capacity
def get(self,key):#每次更新最新使用的key,将他放在最右边
if key in self.od:
val = self.od[key]
self.od.move_to_end(key)
return val
else:
return -1
def put(self,key,value):#更新k/v
if key in self.od:
del self.od[key]
self.od[key] = value
else:
self.od[key] = value
if len(self.od) > self.capacity:
self.od.popitem(last=False)