Quiero escribir una clase de contenedor que actúa como un diccionario (en realidad se deriva de un dict), Las claves para esta estructura serán las fechas.Python dictionary - binary search for a key?
Cuando se utiliza una clave (es decir, fecha) para recuperar un valor de la clase, si la fecha no existe, se utiliza la siguiente fecha disponible que precede a la clave para devolver el valor.
Los siguientes datos deben ayudar a explicar el concepto más lejos:
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
Si trato de buscar el valor asociado con la clave (fecha) '01/05/2001' que debería obtener el valor almacenado en la clave 2001/01/04 ya que esa clave ocurre antes donde la clave '2001/01/05' sería si existiera en el diccionario.
Para hacer esto, necesito poder hacer una búsqueda (idealmente binaria, en lugar de ingenuamente recorrer cada tecla en el diccionario). He buscado las búsquedas de claves del diccionario bsearch en los diccionarios de Python, pero no he encontrado nada útil.
De todos modos, quiero escribir una clase como esa que encapsula este comportamiento.
Esto es lo que tengo hasta ahora (no mucho):
#
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
Un árbol sería una mejor estructura de datos para esto. – FogleBird