self.items.append(item)
self.item_to_position[item] = len(self.items) - 1

def remove_item(self, item):
    position = self.item_to_position.pop(item)
last_item = self.items.pop()
if position != len(self.items):
    self.items[position] = last_item
self.item_to_position[last_item] = position

def choose_random_item(self):
    return random.choice(self.items)
Структура данных Python для эффективного добавления, удаления и случайного выбора