'Return the list of items for a given key. If that key is not in the
`MultiDict`, the return value will be an empty list.  Just as `get`
`getlist` accepts a `type` parameter.  All items will be converted
with the callable defined there.
:param key: The key to be looked up.
:param type: A callable that is used to cast the value in the
:class:`MultiDict`.  If a :exc:`ValueError` is raised
by this callable the value will be removed from the list.
:return: a :class:`list` of all the values for the key.'

def getlist(self, key, type=None):

    try:
        rv = dict.__getitem__(self, key)
    except KeyError:
        return []
    if (type is None):
        return list(rv)
    result = []
    for item in rv:
        try:
            result.append(type(item))
        except ValueError:
            pass
    return result
