python 将字典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 > 类别“affect”。我文件中的行看起来是这样的:
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)
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