Skip to content

Instantly share code, notes, and snippets.

@braingineer
Created April 18, 2017 02:00
Show Gist options
  • Save braingineer/c5e9b6a28779adddf49e83a96e5a4be2 to your computer and use it in GitHub Desktop.
Save braingineer/c5e9b6a28779adddf49e83a96e5a4be2 to your computer and use it in GitHub Desktop.
describe some new dict structure (probably incoming data)
def describe_recursively(datum, level=0, level_increment=2):
indent = lambda i: "|"+"."*i+"|"
info_str = "L{} - TYPE: {:^6} - LEN: {:^5}"
if isinstance(datum, list):
print(indent(level) + info_str.format(level, 'list', len(datum)))
for i, child in enumerate(datum):
describe_recursively(child, level+level_increment, level_increment)
if i>5 and len(datum)>10:
print(indent(level+level_increment)+" ..... ")
describe_recursively(datum[-1], level+level_increment, level_increment)
break
elif isinstance(datum, dict):
print(indent(level) + info_str.format(level, 'dict', len(datum)))
print(indent(level) + "keys: {}".format("; ".join(map(str,datum.keys()))))
print(indent(level)+"---------")
for key in datum.keys():
print(indent(level+level_increment-1) + "-key={:<<30}".format(key))
describe_recursively(datum[key], level+level_increment, level_increment)
print(indent(level)+"---------")
else:
print(indent(level) + info_str.format(level, str(type(datum)), "n/a"))
@braingineer
Copy link
Author

||L0 - TYPE:  list  - LEN:   1  
|....|L4 - TYPE:  dict  - LEN:   2  
|....|keys: seq_data; seq_id
|....|---------
|.......|-key=seq_data<<<<<<<<<<<<<<<<<<<<<<
|........|L8 - TYPE:  list  - LEN:   3  
|............|L12 - TYPE:  dict  - LEN:   5  
|............|keys: entity_id; right_context; entity_type; left_context; entity
|............|---------
|...............|-key=entity_id<<<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE: <class 'int'> - LEN:  n/a 
|...............|-key=right_context<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:  71  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|  .....   
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=entity_type<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=left_context<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:   7  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=entity<<<<<<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:   3  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|............|---------
|............|L12 - TYPE:  dict  - LEN:   5  
|............|keys: entity_id; right_context; entity_type; left_context; entity
|............|---------
|...............|-key=entity_id<<<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE: <class 'int'> - LEN:  n/a 
|...............|-key=right_context<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:  41  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|  .....   
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=entity_type<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=left_context<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:  28  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|  .....   
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=entity<<<<<<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:  12  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|  .....   
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|............|---------
|............|L12 - TYPE:  dict  - LEN:   5  
|............|keys: entity_id; right_context; entity_type; left_context; entity
|............|---------
|...............|-key=entity_id<<<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE: <class 'int'> - LEN:  n/a 
|...............|-key=right_context<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:  25  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|  .....   
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=entity_type<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=left_context<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:  55  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|....................|  .....   
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|...............|-key=entity<<<<<<<<<<<<<<<<<<<<<<<<
|................|L16 - TYPE:  list  - LEN:   1  
|....................|L20 - TYPE: <class 'str'> - LEN:  n/a 
|............|---------
|.......|-key=seq_id<<<<<<<<<<<<<<<<<<<<<<<<
|........|L8 - TYPE: <class 'int'> - LEN:  n/a 
|....|---------

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment