2014-01-18 38 views
0

我運行此代碼,這是應該刪除從列表中滿足一定的要求,同時通過它迭代元素:參數不是迭代

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
  • 其次它應該包含子「一些字符串」

誰能告訴我什麼,我在任何做錯了/這兩種情況和最終的貝特r實現此代碼的方式?

回答

2

比較結果self.visitedLinkDictionary[link] == 1是一個布爾值(True或False)。然後嘗試迭代使用in,由於布爾值不可迭代,所以會生成TypeError。

你想代替:

linkList[:] = [link for link in linkList 
       if self.visitedLinkDictionary[link] == 1 and 
        "some string" in link.split('/')[2]] 
相關問題