Я хочу написать класс контейнера, который действует как словарь (на самом деле происходит от dict). Ключами для этой структуры будут даты.
Когда ключ (то есть дата) используется для извлечения значения из класса, если дата не существует, для возврата значения используется следующая доступная дата, которая предшествует ключу.
Следующие данные должны помочь объяснить концепцию далее:
Date (key) Value
2001/01/01 123
2001/01/02 42
2001/01/03 100
2001/01/04 314
2001/01/07 312
2001/01/09 321
Если я попытаюсь получить значение, связанное с ключом (датой) '2001/01/05', я должен получить значение, сохраненное под ключом 2001/01/04, так как этот ключ встречается до того момента, когда ключ '2001/01/05 'будет, если он существует в словаре.
Чтобы сделать это, мне нужно иметь возможность выполнять поиск (в идеале двоичный, а не наивный цикл через каждый ключ в словаре). Я искал поиск ключей словаря bsearch в словарях Python - но не нашел ничего полезного.
В любом случае, я хочу написать такой класс, который инкапсулирует это поведение.
Это то, что у меня до сих пор (не так много):
#
class NearestNeighborDict(dict):
#
"""
#
a dictionary which returns value of nearest neighbor
if specified key not found
#
"""
def __init__(self, items={}):
dict.__init__(self, items)
def get_item(self, key):
# returns the item stored with the key (if key exists)
# else it returns the item stored with the key