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]
,而我想要True
或False
。
可以使用列表理解吗?
答案 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()
将在第一个真结果处停止。