使用许多键值对在python中过滤列表

时间:2017-12-07 09:44:38

标签: python

我有一个如下所示的列表:

commands = [
{'command': "start app", 'action': "monitor", 'max-threshold': True, 'zero-failcount': True, 'started': True, 'stopped': False, 'failed': False},
{'command': "read log", 'action': "monitor", 'max-threshold': False, 'zero-failcount': True, 'started': True, 'stopped': False, 'failed': False},
{'command': "kill app", 'action': "monitor", 'max-threshold': True, 'zero-failcount': True, 'started': True, 'stopped': False, 'failed': False}
]

我想过滤以便在新列表中只看到少数情况。例如,只有max-threshold为true,zero-failcount为true的那些,等等。我该怎么办?我使用的是Python 2.7。

3 个答案:

答案 0 :(得分:2)

使用list comprehension.

例如:

[command for command in commands if command['max-threshold']]

答案 1 :(得分:0)

使用过滤器 b = list(filter(lambda x: x['max-threshold']==True, a))

在此处阅读更多内容:http://book.pythontips.com/en/latest/map_filter.html

答案 2 :(得分:0)

你可以列出要测试的k,v对(不必是元组列表)

hav = [('max-threshold', True), ('zero-failcount', True)]

[d for d in commands if all([d[k] == v for k, v in hav])]