def get_nested_values()

in variance-analysis/mach_perftest_notebook_dev/perftestnotebook/utilities.py [0:0]


def get_nested_values(nested_obj, nested_keys=None):
    """
    This function returns the items found from a nested object by a nested key list. 
    If nested_keys=None, then return all existed values.

    :param Iterable nested_obj: nested data object.
    :param list nested_keys: nested keys.

    :return list: the values found by nested keys.
    """
    ret = []

    def _helper(nested_obj, nested_keys):
        if nested_keys:
            if isinstance(nested_obj, list):
                for entry in nested_obj:
                    _helper(entry, nested_keys)
            elif isinstance(nested_obj, dict) and len(nested_keys) == 1:
                ret.append(nested_obj[nested_keys[0]])
            else:
                _helper(nested_obj[nested_keys[0]], nested_keys[1:])
        elif type(nested_obj) == dict:
            _helper(list(nested_obj.values()), nested_keys)
        elif type(nested_obj) == list:
            for entry in nested_obj:
                _helper(entry, nested_keys)
        elif nested_obj:
            ret.append(nested_obj)

    _helper(nested_obj, nested_keys)

    return ret