Advertisement
Guest User

Frustration with iteritems not existing for list type

a guest
Oct 6th, 2015
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.57 KB | None | 0 0
  1. def flatten(obj):
  2.     """ flattens a nested data structure into a list of (value, path) tuples """
  3.     vals = []
  4.     def rec(obj, path):
  5.         def append(k, v):
  6.             new_path = path + (k,)
  7.             if hasattr(v, '__iter__'): rec(v, new_path)
  8.             else: vals.append((v, new_path))
  9.         try:
  10.             if hasattr(obj, 'iteritems'):
  11.                 for k,v in obj.iteritems(): append(k,v)
  12.             else:
  13.                 for k,v in enumerate(obj): append(k,v)
  14.         except:
  15.             vals.append((obj, path))
  16.     rec(obj, ())
  17.     return vals
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement