我正在运行此代码,它应该在迭代时从列表中删除满足某个特定要求的元素:
linkList[:] = [link for link in linkList if "some string" in (self.visitedLinkDictionary[link] == 1) and (link.split('/')[2])]
在阅读this问题的答案后,我将代码更改为了。以前的版本是:
addNodes = 0
for link in linkList:
self.visitedLinkDictionary[link] += 1
#control that the link has not been checked previously
if self.visitedLinkDictionary[link] == 1:
#control that the link belongs to the caltech domain
checkDomain = link.split('/')
if "some string" in checkDomain[2]:
addedNodes += 1
else:
print "Not in 'some string' domain"
del linkList[i]
else:
print "Duplicated hyperlink"
del linkList[i]
i += 1
print addedNodes
我要做的是查看字符串列表并检查是否满足两个条件:
self.visitedLinkDictionary
任何人都能告诉我在任何/两种情况下我做错了什么以及最终实现此代码的更好方法吗?
答案 0 :(得分:2)
比较self.visitedLinkDictionary[link] == 1
的结果是布尔值(True或False)。然后你尝试使用生成TypeError的in
来迭代它,因为布尔值不可迭代。
你想要的是:
linkList[:] = [link for link in linkList
if self.visitedLinkDictionary[link] == 1 and
"some string" in link.split('/')[2]]