def extract_lookups(value):
    """Recursively extracts any stack lookups within the data structure.

    Args:
        value (one of str, list, dict): a structure that contains lookups to
            output values

    Returns:
        list: list of lookups if any

    """
    lookups = set()
    if isinstance(value, basestring):
        lookups = lookups.union(extract_lookups_from_string(value))
    elif isinstance(value, list):
        for v in value:
            lookups = lookups.union(extract_lookups(v))
    elif isinstance(value, dict):
        for v in value.values():
            lookups = lookups.union(extract_lookups(v))
    return lookups
Recursively extracts any stack lookups within the data structure.

    Args:
        value (one of str, list, dict): a structure that contains lookups to
            output values

    Returns:
        list: list of lookups if any