Filarius

dict list storage keys flattener and getter

Aug 12th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.96 KB | None | 0 0
  1. def recur_getter(obj,key):
  2.     v = obj
  3.     for k in key:
  4.         v = v[k]
  5.     return v
  6.  
  7. def flat_keys_builder(obj):
  8.     keys = []
  9.     for k in obj.keys():
  10.         keys.append([k])
  11.     flag = True
  12.     final_keys = []
  13.     while flag:
  14.         flag = False
  15.         new_keys = []
  16.         for key in keys:
  17.             val = recur_getter(obj,key)
  18.             if isinstance(val,list):
  19.                 for k in range(len(val)):
  20.                     new_key = key.copy()
  21.                     new_key.append(k)
  22.                     new_keys.append(new_key)
  23.                     flag = True
  24.                 continue
  25.             if isinstance(val,dict):
  26.                 for k in val.keys():
  27.                     new_key = key.copy()
  28.                     new_key.append(k)
  29.                     new_keys.append(new_key)
  30.                     flag = True
  31.                 continue
  32.             #else
  33.             final_keys.append(key)
  34.         keys = new_keys
  35.     return final_keys
Advertisement
Add Comment
Please, Sign In to add comment