我正在尝试遍历数组,跳过某些产品类型。我遇到的问题是它不会跳过它们。无论产品类型是否在跳过列表中,都会发生同样的事情。
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
答案 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):