我有一个如下所示的列表:
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。
答案 0 :(得分:2)
答案 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])]