Python布尔值:另一个列表或字典中列表的任何值

mar*_*rue 0 python boolean-expression

我刚刚发现自己编写了这行代码,我不太喜欢这样做:

if ('upload' in request.POST) or ('delete' in request.POST):
Run Code Online (Sandbox Code Playgroud)

我已经考虑过列表理解,它看起来像这样:

if [value for value in ['upload','delete'] if value in request.POST]:
Run Code Online (Sandbox Code Playgroud)

哪个不是更好.我非常简单的问题是:这可以简化吗?或者这只是想要太聪明?

Mar*_*ers 6

您可以使用set intersection更简洁地编写它:

if {'upload', 'delete'} & set(request.POST):
Run Code Online (Sandbox Code Playgroud)

或者更明确地说:

if {'upload', 'delete'}.intersection(request.POST):
Run Code Online (Sandbox Code Playgroud)