码迷,mamicode.com
首页 > 其他好文 > 详细

OrdereDict

时间:2020-02-14 11:05:54      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:alt   默认   asc   false   缓存   pytho   技术   字典   使用   

od = OrderedDict()  # 按照key进入的顺序

od[‘c‘]=‘c‘

od[‘b‘]=‘b‘

od[‘e‘]=‘e‘

print(od)

print(od.keys())

od.move_to_end(‘e‘,last=False)  # last控制移到左端还是右端

print(od)

od.popitem(last=True)  # last是控制移除最左端还是最有段

print(od)

od.pop(‘e‘)  # 有字典的方法

print(od)

 

 

注意一点,在Python3下默认dict是有序的,这里的有序不是大小排序,是按照插入字典的顺序,而在Python2下则默认是无序的,想要保持有序需要使用OrderedDict

使用OrderreDict实现LRUCache

# 实现LRUcache ,实现一个有序的访问 

# dict使用kv存储键值对得缓存

# OrderreDict用来实现最近访问的key

 

from collections import OrderedDict

class  LRUCasche:

    def __init__(self,capacity = 256):

        self.od = OrderedDict()

        self.capacity = capacity

 

    def get(self,key):  # 访问

        if key in  self.od:

            val = self.od[key]

            self.od.move_to_end(key)  # 每次访问更新最近使用的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)  # 移除最左端的

 

技术图片

 

OrdereDict

标签:alt   默认   asc   false   缓存   pytho   技术   字典   使用   

原文地址:https://www.cnblogs.com/wenshu/p/12305892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!