def findall(lst, key, value):
    """
    Find all items in lst where key matches value.
    For example find all ``LAYER``s in a ``MAP`` where ``GROUP`` equals ``VALUE``

    :param list lst: A list of composite dictionaries e.g. ``layers``, ``classes``
    :param string key: The key name to search each dictionary in the list
    :param value: The value to search for
    """
    possible_values = ("'%s'" % value, '"%s"' % value)
    return (item for item in lst if item[key.lower()] in possible_values)