我正在运行此代码,该代码应该在迭代列表时从列表中删除满足特定要求的元素:
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
- 其次,它应该包含子字符串“some string”
任何人都可以告诉我在任何/两种情况下我做错了什么以及最终更好的方法来实现此代码吗?
最佳答案
比较结果 self.visitedLinkDictionary[link] == 1
是一个 bool 值(True 或 False)。然后您尝试使用 in
对其进行迭代,这会生成 TypeError,因为 bool 值不可迭代。
你想要的是:
linkList[:] = [link for link in linkList
if self.visitedLinkDictionary[link] == 1 and
"some string" in link.split('/')[2]]
关于python - 'bool' 类型的参数不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21202093/