Insert Delete GetRandom O(1)

import random

class RandomizedSet:

    def __init__(self):
        self.arr = []
        self.cache = {}

    def insert(self, val: int) -> bool:
        if val in self.cache:
            return False
        ix = len(self.arr)
        self.cache[val] = ix
        self.arr.append(val)
        return True

    def remove(self, val: int) -> bool:
        if val not in self.cache:
            return False
        temp = self.arr[-1]
        self.arr.pop()
        if temp == val:
            self.cache.pop(temp)
            return True
        else:
            self.arr[self.cache[val]] = temp
            self.cache[temp] = self.cache[val]
            self.cache.pop(val)
            return True

    def getRandom(self) -> int:
        return random.choice(self.arr)