0

私は辞書を2冊持っています。最初の値を 2 番目のキーに一致させ、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)

「解凍するには値が多すぎます」というエラーが表示され続けますが、それとは別に、スクリプトは実際にやりたいことを実行しますか?

更新 (申し訳ありませんが、質問を編集できることを知りませんでした!): 私は 2 つのテキスト ファイルで、file1 は単語を数値システムにマップし、file2 は数値を関連するカテゴリにマップします。最終結果は、file1 の単語が file2 にあるそのカテゴリにリンクされているはずです。これは、最初に単語を数字にリンクし、次に数字をカテゴリにリンクすることによって行われます。例: Aanbidden (オランダ語) > 12 > 猫。"影響"。私のファイルの行は次のようになります。

ファイル1.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)
4

1 に答える 1

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
于 2013-01-23T15:53:17.193 に答える