python中的多条件IF条件

时间:2014-12-02 12:43:04

标签: python

我正在尝试遍历数组,跳过某些产品类型。我遇到的问题是它不会跳过它们。无论产品类型是否在跳过列表中,都会发生同样的事情。

for i in source:
    if (i["product_type"] == 00 and i["product_type"] == 35 and  i["product_type"] == 72):
        print i["product_name"] + " has been skipped"
    else:
        # Upload product

2 个答案:

答案 0 :(得分:2)

这里的问题是你根本无法在一个陈述中拥有所有这些条件。一个项目不能具有同一属性的多个值。您的变量i只有一个product_type属性,因此您实际需要的是一种测试任何一个选项的方法:

if i["product_type"] == 0 or i["product_type"] == 35 or  i["product_type"] == 72:
  #

您希望使用or运算符代替and运算符。

这是一个更易读的代码版本(假设您的产品类型值为int:

if i["product_type"] in [ 0, 35, 72 ]:
  print i["product_name"] + " has been skipped"
else:
  # Upload product

此代码将检查列表中是否引用product_type值:
   [ "00", "35", "72" ]


作为最后一点,您不需要用parethesis包装条件语句(例如,与JS / PHP一样)。你可以简单地省略它们:

if "foo" in [ "foo" ]:
  pass

相同
if ("foo" in [ "foo" ]):
  pass

答案 1 :(得分:0)

你应该or一起而不是and,因为i["product_type"]只能有一个值,我认为这只是一个错字。

if (i["product_type"] == 0 or i["product_type"] == 35 or i["product_type"] == 72):

但是,使用以下

更简单,更简洁
if i["product_type"] in (0, 35, 72):