code: def flatten(struct):
      
      if struct is None:
          return []
      flat = []
      if isinstance(struct, dict):
          for key, result in struct.items():
              flat += flatten(result)
          return flat
  
      if isinstance(struct, basestring):
          return [struct]
  
      try:
          # if iterable
          for result in struct:
              flat += flatten(result)
          return flat
      except TypeError:
          pass
  
      return [struct]
docs: Cleates a flat list of all items in structured output (dicts, lists, items)
      Examples:
      > _flatten({'a': foo, b: bar})
      [foo, bar]
      > _flatten([foo, [bar, troll]])
      [foo, bar, troll]
      > _flatten(foo)
      [foo]