'Get an item from the cache. Moves the item up so that it has the
highest priority then.
Raise an `KeyError` if it does not exist.'

def __getitem__(self, key):

    rv = self._mapping[key]
    if (self._queue[(-1)] != key):
        try:
            self._remove(key)
        except ValueError:
            pass
        self._append(key)
    return rv
