def find_inner(obj, find_key):
    """
    Recursively search through the data structure to find objects
    keyed by find_key.
    """
    results = []

    if not hasattr(obj, "__iter__"):
        # not a sequence type - return nothing
        # this excludes strings
        return results

    if isinstance(obj, dict):
        # a dict - check each key
        for key, prop in obj.items():
            if key == find_key:
                results.extend(prop)
            elif isinstance(prop, dict):
                results.extend(find_inner(prop, find_key))
    elif isinstance(obj, list):
        # a list / tuple - check each item
        for i in obj:
            results.extend(find_inner(i, find_key))

    return results