2017-04-10 27 views
0

我有兩個文本文件命名weburl.txtimageurl.txtweburl.txt包含網站和imageurl.txt的網址中包含所有圖像的URL我想創建讀取一行的字典weburl.txt並使字典的關鍵字和imageurl.txt行作爲值。 weburl.txt如何逐行讀取2個不同的文本文件,並使用python製作另一個包含字典的文件?

url1 
url2 
url3 
url4 
url5...... 

imageurl.txt

imgurl1 
imgurl2 
imgurl3 
imgurl4 
imgurl5 

所需的輸出是

{'url1': imgurl1, 'url2': imgurl2, 'url3': imgurl3......} 

我使用此代碼

with open('weburl.txt') as f : 
    key = f.readlines() 
    with open('imageurl.txt') as g: 
    value = g.readlines() 
    dict[key] = [value] 

    print dict 

我沒有得到所要求的結果

+0

什麼問題呢?請[編輯]一些更多的細節。 –

+0

沒有得到所需的輸出,通過使用該代碼 –

+0

「沒有得到所需的輸出」是不夠詳細。您在給出示例輸入和所需輸出方面做得很好,現在您應該顯示實際輸出並澄清它的錯誤。如果輸出是錯誤消息,請顯示錯誤的完整回溯。 –

回答

1

有問題,在很多層面上,我得到的是一種眩暈的聲明dict[key] = [value],我們通過他們深入:

  1. 的明顯意圖使用一個名爲dict的變量(一個壞主意,因爲它會掩蓋Python對dict類的內建引用)。我們可以將其稱爲d
  2. 不首先初始化字典實例。如果你稱之爲d,這種疏忽會讓你更容易理解NameError。然而,由於你稱它爲dict,因此Python實際上會嘗試在dict類本身(不支持__setitem__)而不是在dict實例中設置項目,因此你會得到一個不同的,更容易混淆的錯誤。
  3. 嘗試進行dict條目分配,其中密鑰是不可散列類型(keylist)。您可以轉換list的哈希的類型tuple很輕鬆了,但是這不是你想要的,因爲你仍然會是...
  4. 嘗試分配一堆值的各自的鍵一下子。這不能通過d[key] = value語法完成。它可以可以完成所有在一個相對簡單的聲明,即d=dict(zip(key,value)),但不幸的是,沒有得到解決這個事實,你是...
  5. 不剝奪每個關鍵和價值的結束換行符。

相反,該行:

d = dict((k.strip(), v.strip()) for k, v in zip(key, value)) 

會做你看起來是想要的。

3

你可以寫類似

with open('weburl.txt') as f, \ 
     open('imageurl.txt') as g: 
    # we use `str.strip` method 
    # to remove newline characters 
    keys = (line.strip() for line in f) 
    values = (line.strip() for line in g) 
    result = dict(zip(keys, values)) 

print(result) 

更多信息有關zipdocs

+0

好極了,我即將消化相同 – Netwave

相關問題