OrdereDict

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)  # 移除最左端的

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

时间: 2024-11-13 08:17:14

OrdereDict的相关文章

[PY3]——字典排序问题

OrderedDict 有序字典 from collections import OrderedDict d={} d[0]=3;d[6]=1;d[3]=1 //仔细看插入顺序 for k,v in d.items(): print(k,v) //输出的时候dict字典会按照key顺序来排序 0 3 3 1 6 1 od=OrderedDict() od[0]=3;od[6]=1;od[3]=1 //但同样的插入顺序下 for k,v in od.items(): print(k,v) //Or

python ==》 模块和正则表达式

今日内容: re 模块 collentions 模块 正则表达式 1.re 模块: re模块下常用的方法: 1 import re 2 #1.re.findall() 3 ret1 = re.findall('a','eva egon yuan') #以 'a' 为眼,找所有. 并且 以列表返回. 4 print(ret1) 5 6 #2.re.search() 7 ret2 = re.search('a','eva egon yuan').group() #从字符串里匹配 'a' 8 prin

Python_Day2

1.Set集合 class set(object): """ set() -> new empty set object set(iterable) -> new set object Build an unordered collection of unique elements. """ def add(self, *args, **kwargs): # real signature unknown ""&qu

python小白-day3 collections系列

一.计数器(Counter) Counter是对字典类型的补充,用于追踪值的出现次数. 注:因Counter继承于dict类,所以其具备dict类的所有功能 1 import collections 2 c1 = collections.Counter('skdhflsdkngsnlknvdlfb') 3 print(c1) Counter 1.__missing__(self, key)对于不存在的元素,返回计数器为0 import collections c1 = collections.C

Python学习day20 常用模块部分

模块:pip install 模块名称安装模块导入模块  from collections import namedtuplecollections模块:提供了几个额外的数据类型: Counter.deque.defaultdict.namedtuple\OrderedDict1.namedtuple:生成可以使用名字来访问元素内容的tuple2.deque:双端队列,可以快速的从另外一侧追加和推出对象3.Counter:计数器4.OrderedDict字典有序化5,defaultdict字典解

第6天

作业:  更新数据库内容 思路:    交集    更新              原集合     交集     新集合   =  更新集合 差集     删除              原集合     差集     新集合   =  删除集合 添加              新集合     差集     原集合   =  添加集合 列表没有 交差集      要转成SET old=  set(old.keys()) new=  set(new.keys()) delete_set= old.d

字典的高级特性

一.字典中的键映射多个值 一个字典就是一个键对应一个单值得映射,如果你想要一个键映射多个值,那么你就需要将多个值放到另外的容器中(如列表,集合),你可以像下面这样构造字典 d = { 'a':[1,2,3], 'b':[4,5]}e = { 'a':{1,2,3}, 'b':{4,5}}选择列表还是集合取决于你的需求,如果你想保持元素的插入顺序就应该使用列表,如果想去掉重复元素就使用集合(并且不关心元素的顺序问题)你可以很方便的使用collections模块中的defaultdict来构造这样的

Python——Code Like a Pythonista: Idiomatic Python

Code Like a Pythonista: Idiomatic Python 如果你有C++基础,那学习另一门语言会相对容易.因为C++即面向过程,又面向对象.它很底层,能像C一样访问机器:它也很高级,有模板.STL 等.如果认真读过<深入C++对象模型>,我想其它语言不会比这个更复杂.你对C++了解的越深,你用其它语言写出的代码就越像C++,这样就体现不出新 语言的价值了.所以,学习新语言要抛弃原有的潜意识,包括代码风格. 1. The Zen of Python (1) 漂亮比丑陋好

python 简单日志框架 自定义logger

转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 通常我们在构建 python 系统时,往往需要一个简单的 logging 框架.python 自带的 logging 框架的确十分完善,但是本身过于复杂,因此需要自行封装来满足我们的高(zhuang)端(b)需求 1. 常用的格式化字符串: 这是我比较常用的格式化字符串,不同的人可能有不同的习惯 1 # 第一种,月日年的输出 2 DEFAULT_DATE_FMT = '%a, %p %b %d