2016-07-07 91 views
1

我正在嘗試使用python進行簡單的網頁報廢,它檢查網站的名稱,將它們全部放入帶鏈接的字典中,然後將名稱與列表進行比較,我準備好了保存。我遇到的問題是嘗試使用不在保存列表中的網站名稱創建新詞典。試圖將字典與文本文件進行比較

together = dict(zip(names, links)) 
final_dict = {} 


for k, v in together.items(): 
    with open('file.txt', 'r') as f: 
     file_lines = f.readlines() 
     if k in file_lines: 
      print('All ready have that name.') 
      pass 
     else: 
      print(k, v) 
      final_dict.update({k, v}) 
    f.close() 

保存的文件只能有together字典的k值。

+1

您的縮進是否在'file_lines中的k'被破壞? –

+0

只在問題中,而不在腳本上。 – warbirdn

回答

2

嘗試改變

file_lines = f.readlines() 

file_lines = f.read().splitlines() 

前者保持換行符\n在該行的末尾。

另外final_dict.update({k, v})應該可能是final_dict.update({k: v}),正如其他人已經指出的那樣,您的縮進可能存在問題。

+0

我採納了你的提示,並提出了:'file_lines = [line.rstrip('\ n')for line in f]'並修正了'({k:v})',謝謝! – warbirdn

2

你的算法效率不高。對於每個項目together,它讀取整個文件。如果在處理文件時處理文件中的每一行,則速度會更快:

together = dict(zip(names, links)) 

with open('file.txt', 'r') as f: 
    for line in f: 
     if line in together: 
      del together[line] 
相關問題