从字典列表推导返回True或False

时间:2018-07-07 23:07:48

标签: python python-3.x list-comprehension

name = [{'a':'Open'},{'b':'Pending'},{'c':'Completed'}]
[s.get('c') == 'Completed' for s in name if 'Completed' in s.values()][0]

当列表理解为True时,输出为Completed。 上面的列表理解中提供了False时,如何返回Rejected

[True if 'Completed' in s.values() else False for s in name]

我已尝试过此操作,但返回[False, False, True],而我想要TrueFalse

可以使用列表理解吗?

1 个答案:

答案 0 :(得分:6)

列表理解应该返回列表。您可以使用生成器表达式,只是在第一个结果上停止,例如

next((True for s in name if 'Completed' in s.values()), False)

或者您可以在列表理解中使用any()

any([True if 'Completed' in s.values() else False for s in name])

实际上可以简化为

any('Completed' in s.values() for s in name)

再次使用生成器表达式,因此您不必提前生成整个列表。给定迭代器后,any()将在第一个真结果处停止。