2013-01-23 96 views
0

我有兩個字典。我必須將第一個字段中的值與第二個字段中的值匹配,然後返回第二個字典中找到的值。我想出了這個至今:python鏈接值字典1到鍵字典2

​​

我不斷收到錯誤「值過多解壓」,併除此之外,將我的劇本其實做我想做的事情?

更新(對不起,不知道我可以編輯我的問題!): 我的兩個文本文件file1將一個單詞映射到數字系統,file2將該數字映射到其相關類別。最終的結果應該是file1的單詞被鏈接到file2中的類別。首先將該單詞鏈接到一個數字,然後將該數字鏈接到一個類別。例如:Aanbidden(荷蘭文)> 12> Cat。 「影響」。在我的文件中的行是這樣的:

FILE1.TXT:

aanbidden: 12 13 14 57 58 
leven : 15 
drinken: 23 56 
... 
(As you see each key can have one or more values) 

FILE2.TXT:

12: affect 
13: posemo 
14: Posfeel 
15: Optim 
23: discrep 
56: money 
57: metaph 
58: religious 
... 
(In this file each key has only one value) 
+2

你會得到什麼?'太多的值來解開'?你可以發佈完整的追溯? (最有可能的罪魁禍首是你的'file1.txt'和'file2.txt'每行有兩個以上的項目) –

+0

我懷疑這會起作用。你正在打印'價值',但我沒有看到'價值'定義的任何地方... – mgilson

回答

1

根據您的意見,下面似乎是你想要什麼:

d1 = {} 
with open ("file1.txt") as f: 
    for line in f: 
     (key,val) = line[:-1].split(": ") 
     d1[key] = val.split() 

d2 = {} 
with open("file2.txt") as f: 
    for line in f: 
     (key,val) = line[:-1].split(": ") 
     d2[key] = val 

for word, nums in d1.items(): 
    print word, "->", 
    for num in nums: 
     if d2.has_key(num): 
      print d2[num], 
    print 

鑑於上面張貼的文件,它會打印以下內容:

drinken -> discrep money 
leven -> Optim 
aanbidden -> affect posemo Posfeel metaph religious 
+0

謝謝!是的,這兩個文件都有兩個以上的項目,這就是解釋。我應該使用iteritems嗎? – JohnDoe

+0

@JohnDoe:不,這與此無關。你的文件的一行看起來是什麼樣的(有多少項),以及你想用哪個項作爲鍵和值? –

+0

@JohnDoe:順便說一句,你可以在你的原始問題中編輯(http://meta.stackexchange.com/questions/21788/how-does-editing-work)附加信息。一個好的編輯就是在'file1.txt'或'file2.txt'的一行上顯示你的內容,並說明你想用哪一行作爲關鍵字,以及作爲一個值。 –