11class LruCache :
22 class clsNode :
3- def __init__ (self ,value ,key ):
4- self .next = None
3+ def __init__ (self , value , key ):
4+ self .next = None
55 self .previous = None
66 self .value = value
77 self .key = key
88
99 def __init__ (self , limit ):
1010 if limit <= 0 :
11- raise ValueError ("limit must be greater than 0" )
11+ raise ValueError ("limit must be greater than 0" )
1212 self .head = None
1313 self .tail = None
14- self .limit = limit
14+ self .limit = limit
1515 self .cache = {}
1616
1717 def add_to_head (self , node ):
18- if node == None :
19- return
20- if self .head is None :
21- self .head = node
22- self .tail = node
23- else :
24- node .next = self .head
25- self .head .previous = node
26- self .head = node
27-
18+ if node == None :
19+ return
20+ if self .head is None :
21+ self .head = node
22+ self .tail = node
23+ else :
24+ node .next = self .head
25+ self .head .previous = node
26+ self .head = node
2827
2928 def remove (self , node ):
3029 if node == None :
@@ -45,34 +44,34 @@ def remove(self, node):
4544 node .next .previous = node .previous
4645 node .previous .next = node .next
4746 node .next = None
48- node .previous = None
47+ node .previous = None
4948
50- def move_to_head (self ,node ):
49+ def move_to_head (self , node ):
5150 self .remove (node )
5251 self .add_to_head (node )
5352
5453 # cache {key,node}
55- def get (self ,key ):
56- target = self .cache .get (key )
54+ def get (self , key ):
55+ target = self .cache .get (key )
5756 if target == None :
5857 return None
59-
58+
6059 self .move_to_head (target )
6160 return target .value
6261
63- def set (self ,key ,value ):
62+ def set (self , key , value ):
6463 target = self .cache .get (key )
6564
6665 if target is not None :
6766 target .value = value
6867 self .move_to_head (target )
6968
7069 else :
71- target = self .clsNode (value ,key )
70+ target = self .clsNode (value , key )
7271 self .add_to_head (target )
7372 self .cache [key ] = target
7473
7574 if len (self .cache ) > self .limit :
7675 old_tail = self .tail
7776 self .remove (old_tail )
78- del self .cache [old_tail .key ]
77+ del self .cache [old_tail .key ]
0 commit comments