datetime.datetime
辞書の「キー」がオブジェクトである辞書に現在保存している時系列データがあります。次のようなもの:
data[datetime.datetime(2012,5,14,15,28,2)]={'error':error,'flags':flags,'value':value}
私が持っている質問は次のとおりです。指定された時間の前後に最も近い2回を見つけるための最良の方法は何ですか?この関数は、最も近い2つのポイント間を線形補間するループ内で(〜10,000)呼び出されるため、できるだけ高速にする必要があります。
私は現在、すべてのキー(〜50,000)を検索するため、途方もなく長い時間がかかる1つのメソッドが機能しています。
def findTime(time):
keys=data.keys()
bdt=10000000000000000000
adt=10000000000000000000
minKey=False
maxKey=False
for key in keys:
dt=(time-key).total_seconds()
if abs(dt)<bdt and dt>0:
bdt=abs(dt)
minKey=key
elif abs(dt)<adt and dt<0:
adt=abs(dt)
maxKey=key
return minKey,maxKey
バイセクトを使用する私の試み:
def findTime(time):
keys=data.keys()
l,r = bisect.bisect_left(time,keys), bisect.bisect_right(time,keys)
return l,r
残念ながら、これによりエラーが発生します。
TypeError: 'datetime.datetime' object does not support indexing
どんな助けでもいただければ幸いです。