我有一本字典item
。它有字符串作为键,值是列表,例如:
item['title'] = [u'python']
item['image'] = [u'/link/to/image']
item['link'] = [u'link to article']
我想检查任何值的长度是否为0,但链接或图像可能为空,所以我执行了以下操作:
for key, value in item.iteritems():
if len(value) == 0:
if key != 'image' or key != 'link':
raise DropItem("Item is empty: %s" %item)
return item
因此,只有当值为0并且它不是图像或键时才应删除项目。我现在的问题是这种情况不起作用。当图像或链接为空时,该项目仍会被删除。
任何想法都错了吗? (我是python的新手^^)
答案 0 :(得分:5)
您将逻辑or
与and
混淆了。例如,如果密钥为"image"
,请检查以下内容:
if "image" != 'image' or "image" != 'link':
#if False or True:
#if True:
相反,你想要
if key != 'image' and key != 'link':
或者,更容易阅读:
if key not in ('image', 'link'):
答案 1 :(得分:4)
你应该:
if key != 'image' and key != 'link':
,因为
if key != 'image' or key != 'link':
永远是真的