2013-01-23 6 views
0

두 개의 사전이 있습니다. 첫 번째 값을 두 번째 값의 키와 일치시킨 다음 두 번째 사전에서 찾은 값을 반환해야합니다. 지금까지이 함께했다 :파이썬 링크 값 사전 1 ~ 키 사전 2

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

for item in d1.values(): 
    if d2.has_key(item): 
     print value.d2(item) 

나는 "압축을 풀 너무 많은 값"과 그 옆에서, 내 스크립트가 실제로 내가하고 싶은 일을 할 것입니다 오류가 계속?

업데이트 : (내 질문을 편집 할 수 있었는지 모르겠다.) 내 두 개의 텍스트 파일 인 file1은 숫자 시스템에 단어를 매핑하고 file2는 해당 카테고리에 번호를 매핑합니다. 최종 결과는 file1의 단어가 file2에있는 해당 범주에 링크되어 있어야합니다. 먼저 단어를 숫자에 연결 한 다음 해당 숫자를 카테고리에 연결하면됩니다. 예 : Aanbidden (네덜란드어)> 12> Cat. "감정". 내 파일의 라인은 다음과 같이 :

은 File2.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

이것이 작동 할 것 같지 않습니다. 당신은'value'를 인쇄하고 있습니다 만, 나는 어디에서나 정의 된'value'를 보지 못합니다 ... – 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

@ 존도 : 아니, 그게 아무 관계 없어. 파일의 한 줄이 얼마나 보이며 (얼마나 많은 항목), 항목 중 어느 항목을 키와 값으로 사용 하시겠습니까? –

+0

@ 존도 : 덧붙여서 원래의 질문에 대한 추가 정보를 (http://meta.stackexchange.com/questions/21788/how-does-editing-work) 편집 할 수 있습니다. 하나의 좋은 편집은'file1.txt' 또는'file2.txt'의 한 줄에 가지고있는 것을 보여주고 그 줄의 어느 부분을 키로 사용하고 무엇을 값으로 쓰는지 명시하는 것입니다. –