我想编写一个容器类,它的作用类似于字典(实际上是从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”的位置之前。
为了做到这一点,我需要能够进行搜索(理想情况下是二进制的,而不是天真地循环遍历字典中的每个键)。我在Python字典中搜索了bsearch dictionary键查找,但没有找到任何有用的东西。
无论如何,我想写一个这样的类来封装这个行为。
这就是我目前所拥有的(不多):#
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