我有一个来自数据库的操作列表。这被复制到一个双端队列中,因为我想按顺序处理它,一边走一边从左边弹出东西。
所以我有类似 actions = deque(actions) 的东西,这很好。
每个操作项都是来自使用 DictCursor 的 psycopg 模块的列表。每个列表都有项目“阶段”。
所以事情是分阶段进行的。有些动作在“a”阶段,有些在“b”阶段,等等。这不是存储数据的最佳方式,但这就是我得到的。
所以为了让我的生活更轻松,我想将双端队列分阶段分成几个双端队列。
因此,如果 actions[0]['phase'] == 'a' 那么这将进入一个列表,其中仅包含来自阶段 a 的项目,依此类推,b 等。
我可以通过一堆 if 和附加来做到这一点,但这似乎需要付出很多努力。我认为答案可能是 filter(),但我不太确定如何使用它。
随机注意事项:
- 每个项目都是有序的,需要在每个双端队列中保留顺序。
- 这些阶段是已知的和连续的。例如,如果阶段 c 不存在,我们知道阶段 d 不存在。阶段的数量是有限的,如果我记得的话,大概是 5 个。
澄清尝试:
我有一个双端队列,动作。就像是:
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']
]
使用最少的代码,以及适用于阶段/等中任意数量的阶段/项目的东西。