Здесь недостаточно информации, чтобы сказать, какую структуру данных вам следует использовать, потому что мы не знаем, что еще вы с ней делаете.
Если вам нужно быстро вставить записи вструктура данных позже по одному, тогда вам нужна древовидная структура данных, которая, к сожалению, не имеет стандартной реализации (или даже стандартного интерфейса для некоторых операций) в Python.
Если вытолько нужно уметь делать то, что вы сказали - сортировать существующие данные - тогда вы можете использовать списки.Сортировка выполняется быстро, особенно если части данных уже отсортированы, и вы можете использовать двоичный поиск для быстрого поиска.Тем не менее, вставка элементов будет O (n), а не O (log n), который вы получите с деревом.
Вот простой пример, преобразование dicts в список или кортежи, сортировка комбинированных результатови использование модуля bisect для поиска элементов.
Обратите внимание, что у вас могут быть дубликаты ключей, которые отображаются более чем в одном поле.Это легко сделать: они будут естественным образом отсортированы, а разделение на две части даст вам диапазон [start, end), содержащий все эти ключи.
Если вы хотите добавить блоки данных позже, добавьте ихдо конца и пересортировать список;Сортировка Python хороша в этом и, вероятно, будет намного лучше, чем O (n log n).
Этот код предполагает, что ваши ключи, как вы сказали, целые.
dataA = { 1: 'data1', 3: 'data3', 5: 'data5', 2: 'data2' }
dataB = { 2: 'more data2', 4: 'data4', 6: 'data6' }
combined_list = dataA.items() + dataB.items()
combined_list.sort()
print combined_list
import bisect
def get_range(data, value):
lower_bound = bisect.bisect_left(data, (value, ))
upper_bound = bisect.bisect_left(data, (value+1, ))
return lower_bound, upper_bound
lower_bound, upper_bound = get_range(combined_list, 2)
print lower_bound, upper_bound
print combined_list[lower_bound:upper_bound]