区間連想配列

すばらしいのは連想配列です。 さまざまなタスクが、その助けを借りて簡単に、楽しく、素早く解決されます。 しかし、値が1つのキーに属しているのではなく、特定の間隔で「展開」されるのはどうでしょうか。
オンラインストアの管理者の義務をスケジュールするためのプログラムを作成する必要があると想像してください。 彼との仕事はできる限りシンプルで、次のようなものでした。
#
>>> timetable[ '08:00' : '12:00' ] = ''
>>> timetable[ '12:00' : '16:00' ] = ''

# 13:51 ?
>>> print timetable[ '13:51' ]


#
>>> for interval, person in timetable.items(): print interval, person
( '08:00' , '12:00' )
( '12:00' , '16:00' )

# ...
>>> print timetable
{[ '08:00' , '12:00' ] => '' , [ '12:00' , '16:00' ] => '' }



#
>>> del timetable[ '15:00' : '16:00' ]
>>> print timetable
{[ '08:00' , '12:00' ] => '' , [ '12:00' , '15:00' ] => '' }

# ...
>>> del timetable[ '12:00' : '16:00' ]
>>> print timetable
{[ '08:00' , '12:00' ] => '' }

#
>>> timetable[ '11:00' : '15:00' ] = ''
>>> print timetable
{[ '08:00' , '11:00' ] => '' , [ '11:00' , '15:00' ] => '' }

# ,
# , 15 17,
# ,
>>> timetable[ '15:00' : '17:00' ] = ''
>>> print timetable
{[ '08:00' , '11:00' ] => '' , [ '11:00' , '17:00' ] => '' }

#
>>> timetable[ '17:00' : '20:00' ] = ''
>>> timetable[ '21:00' : '23:00' ] = ''
>>> timetable
{[ '08:00' , '11:00' ] => '' , [ '11:00' , '17:00' ] => '' ,
[ '17:00' , '20:00' ] => '' , [ '21:00' , '23:00' ] => '' }

# , ,
# . , .
>>> timetable.shrink()
>>> print timetable
{[ '08:00' , '20:00' ] => '' , [ '21:00' , '23:00' ] => '' }


#
# .


ほぼそのようなタスクは、プロジェクトで私に直面しました。 グーグルは、いくつかの重要な機能が欠けている興味深いレシピを提供しました。 ファイルが完成した後、すべてが適切に配置されました。

誰がそれを必要とする-気軽にそれを取る。 コメント、質問、バグレポートは大歓迎です。 開発のアイデアがある場合は、書いてください!

UPD:残念ながら、Visual Code HighlighterとHabraparserの後、コードのフォーマットが完全に台無しになったため、ここから削除してGoogleに掲載します: code.google.com/p/intervalmap/source/browse/trunk/intervalmap.py

Source: https://habr.com/ru/post/J43731/


All Articles