データベースからのアクションのリストがあります。順番に処理したいので、これは deque にコピーされます。
したがって、 actions = deque(actions) のようなものがありますが、これは問題ありません。
各アクション項目は、DictCursor を使用した psycopg モジュールからのリストです。各リストには「フェーズ」という項目があります。
そのため、物事は段階的に進みます。一部のアクションはフェーズ「a」、一部はフェーズ「b」などです。データを保存する最良の方法ではありませんが、それが私に与えられたものです。
したがって、私の人生を楽にするために、両端キューをフェーズごとにいくつかの両端キューに分割したいと考えています。
したがって、actions[0]['phase'] == 'a' の場合、これはフェーズ a からの項目のみを含むリストに入り、b なども同様です。
たくさんのifと追加でこれを行うことができますが、それは大変な労力のようです. 答えはfilter()かもしれないと思いますが、使い方がよくわかりません。
注意すべきランダムなもの:
- 各アイテムは順番に並んでおり、順番は各両端キュー内で保持する必要があります。
- フェーズは既知であり、連続しています。たとえば、フェーズ c が存在しない場合、フェーズ d が存在しないことがわかります。フェーズの数には限りがあり、思い出すと 5 つほどです。
説明の試み:
私はdeque、アクションを持っています。何かのようなもの:
actions = [
['phase': 'a', 'something_else': 'x'],
['phase': 'a', 'something_else': 'y'],
['phase': 'b', 'something_else': 'x']
]
(のようなもの)で終わりたい:
a = [
['phase': 'a', 'something_else': 'x'],
['phase': 'a', 'something_else': 'y']
]
b = [
['phase': 'b', 'something_else': 'x']
]
最小限のコードで、フェーズ内の任意の数のフェーズ/アイテムで機能するものなど。