У меня есть динамический набор, состоящий из ряда данных порядка сотен объектов, где каждый ряд должен быть идентифицирован (целым числом) и состоит из элементов, также идентифицированных целым числом. Каждый элемент является пользовательским классом.
Я использовал defaultdict для создания вложенного (2-D) словаря. Это позволяет мне быстро получить доступ к серии и отдельным элементам по ключу / идентификатору. Мне нужно было иметь возможность добавлять и удалять элементы и целые серии, так что диктовка служила мне хорошо. Также обратите внимание, что идентификаторы не должны быть последовательными из-за добавления / удаления. Идентификаторы важны, поскольку они уникальны и на них ссылаются в другом месте через мое приложение.
Например, рассмотрим следующий набор данных с ключами / идентификаторами,
[1][1,2,3,4,5]
[2][1,4,10]
[4][1]
Однако теперь я понимаю, что хочу иметь возможность вставлять элементы в серию, но словарь не совсем это поддерживает. Например, я хотел бы иметь возможность вставить новый элемент между 3 и 4 для серии 1, в результате чего идентификаторы над ним (с 4,5) будут увеличиваться (до 5,6):
[1][1,2,3,4,5] becomes
[1][1,2,3,4(new),5,6]
Порядок имеет значение, поскольку элементы являются частью последовательного ряда. Я понимаю, что это было бы проще с вложенным списком, поскольку он поддерживает insert (), но тогда я был бы вынужден перебирать весь двумерный массив, чтобы получить правильные индексы элементов?
Какой самый оптимальный способ реализовать эту структуру данных в Python?