Если вы ищете реализацию эффективного типа контейнера для Python, реализованного с использованием чего-то вроде сбалансированного дерева поиска (например, красно-черного дерева), то оно не является частью стандартной библиотеки.
Мне удалось найти это, хотя:
http://www.brpreiss.com/books/opus7/
Исходный код доступен здесь:
http://www.brpreiss.com/books/opus7/public/Opus7-1.0.tar.gz
Я не знаю, как лицензируется исходный код, и я сам не использовал его, но было бы неплохо начать искать, если вы не заинтересованы в развертывании собственных контейнерных классов.
Существует PyAVL , который является модулем C, реализующим дерево AVL.
Также, эта тема может быть вам полезна. Он содержит много предложений о том, как использовать модуль bisect для улучшения существующего словаря Python, чтобы выполнять то, что вы просите.
Конечно, использование insort () таким способом было бы довольно дорого для вставки и удаления, поэтому тщательно продумайте это для своего приложения. Реализация соответствующей структуры данных, вероятно, будет лучшим подходом.
В любом случае, чтобы понять, следует ли сохранять структуру данных отсортированной или сортировать ее при итерации по ней, вам необходимо знать, намереваетесь ли вы вставить много или много итерировать. Сохранение отсортированной структуры данных имеет смысл, если вы изменяете его содержимое относительно редко, но много итерируете по нему. И наоборот, если вы вставляете и удаляете элементы все время, но выполняете итерацию по коллекции относительно редко, сортировка набора ключей перед итерацией будет быстрее. Нет единого правильного подхода.