'Like `setdefault` but sets multiple values.  The list returned
is not a copy, but the list that is actually used internally.  This
means that you can put new values into the dict by appending items
to the list:
>>> d = MultiDict({"foo": 1})
>>> d.setlistdefault("foo").extend([2, 3])
>>> d.getlist("foo")
[1, 2, 3]
:param key: The key to be looked up.
:param default: An iterable of default values.  It is either copied
(in case it was a list) or converted into a list
before returned.
:return: a :class:`list`'

def setlistdefault(self, key, default_list=None):

    if (key not in self):
        default_list = list((default_list or ()))
        dict.__setitem__(self, key, default_list)
    else:
        default_list = dict.__getitem__(self, key)
    return default_list
