Ich möchte eine Container-Klasse schreiben, die wie ein Wörterbuch funktioniert (tatsächlich von einem Diktat abgeleitet). Die Schlüssel für diese Struktur sind Daten.Python-Wörterbuch - binäre Suche nach einem Schlüssel?
Wenn ein Schlüssel (date) zum Abrufen eines Werts aus der Klasse verwendet wird, wird das nächste verfügbare Datum, das dem Schlüssel vorausgeht, verwendet, um den Wert zurückzugeben, wenn das Datum nicht vorhanden ist.
Folgende Daten sollte das Konzept erklären helfen weiter:
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
Wenn ich versuche, den Wert mit der Taste (Datum) ‚2001.01.05‘ Ich den Wert bekommen sollte unter dem Schlüssel gespeichert ist, zugeordnet zu holen 2001/01/04 da dieser Schlüssel vor dem Schlüssel "2001/01/05" vorkommt, wenn er im Wörterbuch vorhanden wäre.
Um dies zu tun, muss ich in der Lage sein, eine Suche durchzuführen (idealerweise binär, anstatt naiv durch alle Schlüssel im Wörterbuch zu gehen). Ich habe in den Python-Wörterbüchern nach bsearch-Wörterbuch-Schlüsselsuchen gesucht - aber nichts Nützliches gefunden.
Wie auch immer, ich möchte eine Klasse schreiben, die dieses Verhalten kapselt.
Dies ist, was ich bisher (nicht viel):
#
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
Ein Baum wäre eine bessere Datenstruktur für diese sein. – FogleBird