Предположим, я профилировал свою программу, и подавляющее большинство времени выполнения тратится на метод 'remove' of 'list' objects . Программа управляет коллекцией коллекций, и коллекции не нужно заказывать. Какой самый простой способ реализовать эти коллекции в python (желательно с использованием стандартных коллекций python), чтобы collection.remove (item) был недорогим, когда collection является внешней коллекцией и item является внутренней коллекцией, а когда collection является внутренней коллекцией, а item является просто неизменным объектом.
Проблема с использованием наборов здесь заключается в том, что наборы не могут содержать изменяемые коллекции, поэтому внутренние наборы должны быть заморожены, но тогда удаление элементов уже не так дешево.
Лучшее решение, на которое я натолкнулся до сих пор, было предложено кем-то в качестве ответа здесь, который, очевидно, был удален вскоре после этого. Они предложили использовать диктовку. Это сработает, но вам придется генерировать произвольные идентификаторы для каждого элемента, так что это немного неловко. Другой альтернативой является использование связанного списка, но это также будет неудобно, поскольку связанные списки не являются частью стандартной библиотеки.