Advertisement
Uno-Dan

Untitled

Mar 6th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1.     def get(self, uri=None):
  2.         if not uri:
  3.             return self._values
  4.  
  5.         self._target_found = False
  6.  
  7.         def walk(_uri, values):
  8.             segments = _uri.split('/', 1)
  9.  
  10.             if segments[0] not in values:
  11.  
  12.                 def walker(_value):
  13.                     if segments[0] in _value and len(segments) == 1:
  14.                         self._target_found = True
  15.                         return _value[segments[0]]
  16.                     elif len(segments) == 1 and not isinstance(_value, dict):
  17.                         return None
  18.  
  19.                     for key, _item in _value.items():
  20.                         if segments[0] == key:
  21.                             if len(segments) == 1:
  22.                                 self._target_found = True
  23.                                 return _item
  24.                             else:
  25.                                 return walk(segments[1], _item)
  26.                         else:
  27.                             return walker(_item)
  28.                 values = walker(values)
  29.  
  30.             if self._target_found or not isinstance(values, dict):
  31.                 return values
  32.  
  33.             elif len(segments) == 1:
  34.                 if segments[0] in values:
  35.                     return values[segments[0]]
  36.                 return None
  37.             else:
  38.                 for item in values.values():
  39.                     if isinstance(item, dict):
  40.                         return walk(segments[1], item)
  41.  
  42.         return walk(uri, self._values)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement