Advertisement
Uno-Dan

Geoff step 4 Finished

Sep 7th, 2019
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.09 KB | None | 0 0
  1. cfg = {
  2.     'level_1': {
  3.         'level_2': {
  4.             'item1': 10,
  5.             'item2': 20,
  6.         }
  7.     }
  8. }
  9.  
  10.  
  11. class Cache:
  12.     def __init__(self, **data):
  13.         self.nodes = data
  14.  
  15.     def get(self, uri=None):
  16.  
  17.         def walk(_uri, nodes):
  18.             parts = _uri.split('/', 1)
  19.             key = parts.pop(0)
  20.  
  21.             if key in nodes:
  22.                 node = nodes[key]
  23.  
  24.                 if not parts:
  25.                     return node
  26.                 else:
  27.                     return walk(parts[0], node)
  28.  
  29.         return walk(uri, self.nodes)
  30.  
  31.     def set(self, uri, value=None):
  32.  
  33.         def walk(_uri, nodes):
  34.             parts = _uri.split('/', 1)
  35.             key = parts.pop(0)
  36.  
  37.             if key in nodes and parts:
  38.                 return walk(parts[0], nodes[key])
  39.             else:
  40.                 if len(_uri.split('/')) == 1:
  41.                     nodes[key] = value
  42.  
  43.         return walk(uri, self.nodes)
  44.  
  45.  
  46. c = cache = Cache(**cfg)
  47.  
  48. print(c.get('level_1/level_2/item2'))
  49. c.set('level_1/level_2/item3', 100)
  50. print(c.get('level_1/level_2/item3'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement