私はイベントのリストを持っています。両方のdatetimeオブジェクトであるStartおよびEndとしての各イベント。私は現在、表示の目的で、既存のイベントから作成された「空き時間」イベントのリストを必要としています。私はそれが理にかなったことを願うこれはこれまで私が思いつくことができる最高です。どんな助けにも感謝!python datetimeオブジェクトのリストで 'スペア'時間を見つける
class Event():
Start = datetime.datetime
End = datetime.datetime
Reserved = boolean
# create a couple of events with some spare time between them...
ev1 = Event()
ev1.Start = datetime.datetime(2011,1,1,5)
ev1.End = datetime.datetime(2011,1,1,6)
ev1.Reserved = True
ev2 = Event()
ev2.Start = datetime.datetime(2011,1,1,8)
ev2.End = datetime.datetime(2011,1,1,9)
ev2.Reserved = True
events = [ev1,ev2]
# sort the events list...
events.sort(key=lambda e: e.Start)
# create a 'spare time' event based on the existing events...
allevents = []
for event in events:
spare = Event()
spare.Start = events[events.index(event)-1].End+datetime.timedelta(seconds=1)
spare.End = event.Start-datetime.timedelta(seconds=1)
spare.Reserved = False
allevents.append(spare)
allevents.append(event)
allevents.sort(key=lambda e: e.Start)
for event in allevents:
print str(event.Start), str(event.End), event.Reserved
ので、これは動作しますが、私は停止し、深夜の空いた時間を開始する方法を把握するためには至っていないが、私はそれを行う前に、私は私が正しい方向に向かってるかどうかを知りたいです皮切りに。それとももっと良い方法がありますか? (通常はあります!)..
MFB
-1(Eventクラスの奇妙な定義の場合) __init __()のようなコンストラクタを使うのが聞こえますか?これらの無意味な割り当てdatetime.datetimeは何をすべきですか? –
コードに角括弧がありません。 – mac
@mac - ありがとうございます。 @センチネル - はい、私は多くのことを学ぶ必要があります。実のところ、私の実際のアプリでは、イベントはエリクシルクラスとして宣言されています。 Pythonクラスを作成する必要はほとんどありません。私はちょうど今度はあなたのような人々がすぐにコードを実行できるようにしました。だから、あなたが洞察力を持っていれば、投稿の主題は、素晴らしい! – MFB