Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def flatten(obj):
- """ flattens a nested data structure into a list of (value, path) tuples """
- vals = []
- def rec(obj, path):
- def append(k, v):
- new_path = path + (k,)
- if hasattr(v, '__iter__'): rec(v, new_path)
- else: vals.append((v, new_path))
- try:
- if hasattr(obj, 'iteritems'):
- for k,v in obj.iteritems(): append(k,v)
- else:
- for k,v in enumerate(obj): append(k,v)
- except:
- vals.append((obj, path))
- rec(obj, ())
- return vals
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement