2012-04-08 94 views
0

我刚刚发现自己写这行代码,这是我不喜欢太多:Python的布尔:在另一个列表或字典列表中的任意值

if ('upload' in request.POST) or ('delete' in request.POST): 

我媒体链接想过列表理解,这看起来像这样:

if [value for value in ['upload','delete'] if value in request.POST]: 

这不是更好。我非常简单的问题是:这可以简化吗?或者这只是试图太聪明?

+0

我确实认为你想要变得太聪明。演习仍然很有趣。 – 2012-04-08 19:34:08

+0

这正是我问这个问题的原因。当然,我确实使用上面这样的线条而不会感到头痛。 – marue 2012-04-08 19:40:08

回答

6

你可以更简洁地使用交集写:

if {'upload', 'delete'} & set(request.POST): 

或者更明确:

if {'upload', 'delete'}.intersection(request.POST): 
+2

+1我们需要更多地使用套餐。 – delnan 2012-04-08 19:28:26

1

简化使用any()

if any(value for value in ['upload','delete'] if value in request.POST): 
相关问题