"""Common utility methods.""" def flatten_json(nested_json): """Flatten json object with nested keys into a single level.""" output = {} def flatten(json, name=''): if type(json) is dict: for key in json: flatten(json[key], name + key + '_') elif type(json) is list: i = 0 for key in json: flatten(key, name + str(i) + '_') i += 1 else: output[name[:-1]] = json flatten(nested_json) return output def filter_keys_from_list_of_dict(list_of_dicts, keys): """Filter keys from a list of dicts.""" return [ {key: item[key] for key in keys} for item in list_of_dicts ] def iterate_all(iterable, return_value='key'): """Iterates an interable and returns all keys or values.""" if isinstance(iterable, dict): for key, value in iterable.items(): if return_value == 'key': yield key elif return_value == 'value': if not (isinstance(value, dict) or isinstance(value, list)): yield value for ret in iterate_all(value, return_value=return_value): yield ret elif isinstance(iterable, list): for el in iterable: for ret in iterate_all(el, return_value=return_value): yield ret