Python IF语句压缩多个OR语句

Python IF语句压缩多个OR语句,python,if-statement,Python,If Statement,我有以下几行 if 'smoke' in row['product'].lower() or 'grill' in row['product'].lower() or 'choco' in row['product'].lower(): 我想在OR子句中添加多个项。['smoke','grill','choco',…],如何在不丢失逻辑的情况下压缩if语句?您可以将生成器表达式与any一起使用: if any(item in row['product'].lower() for item i

我有以下几行

if 'smoke' in row['product'].lower() or 'grill' in row['product'].lower() or 'choco' in row['product'].lower(): 

我想在OR子句中添加多个项。['smoke','grill','choco',…],如何在不丢失逻辑的情况下压缩if语句?

您可以将生成器表达式与
any一起使用:

if any(item in row['product'].lower() for item in ("smoke", "grill", "choco")):

一种方法是使用
any

if any(item in row['product'].lower()
       for item in ('choco', 'smoke', 'grill'):
或者,如果
行['product'].lower()
是一个字符串,您希望比较它们是否相同:

if row['product'].lower() in ('choco', 'grill', 'smoke'):
在我有名称元组的地方,将其替换为预先编写的字符串列表,如下所示:

names = ('choco', 'grill', 'smoke', ...)
if row['product'].lower() in names:

将每个条件分配给一个单独的变量。或者使用dict。确切地说,
行[product].lower()
返回什么?@NChauhan它将生成一个字符串形式的产品名称,例如:'best-chopper'So,是否要检查名称中是否出现了
'smoke'
,例如
'smoked-fish'
,或者名称是否与值完全相同?@NChauhan是否出现您的第二个建议与第一个建议的作用不完全相同。您正在检查
行['product']
是否与这三个单词中的任何一个完全相同,而不是它是否包含这三个单词中的任何一个。是的,考虑到这一点,但选择哪一个合适也取决于OP的数据。OP可以将元组作为指定变量分离,从而缩短
if
行。