如何重新调整defaultdict(list)s-Python

如何重新调整defaultdict(list)s-Python,python,list,map,tuples,defaultdict,Python,List,Map,Tuples,Defaultdict,我需要一个defaultdict,它可以从第一个文件中获取给定查询词列表的finaldict 最后一个dict是两个文件中共享相同ID的一对单词的字典。例如foo,oof共享相同的1243和1453ID。它是为了方便以后搜索单词对,当我尝试搜索('foo','oof')时,它将返回['1243','1453']。 如果我在finaldict中搜索('foo','duh'),它将不会返回任何内容,因为单词对不共享任何相同的ID query = ['foo','barbar'] finaldict

我需要一个defaultdict,它可以从第一个文件中获取给定查询词列表的
finaldict

最后一个dict是两个文件中共享相同ID的一对单词的字典。例如
foo,oof
共享相同的
1243
1453
ID。它是为了方便以后搜索单词对,当我尝试搜索
('foo','oof')
时,它将返回
['1243','1453']
。 如果我在finaldict中搜索
('foo','duh')
,它将不会返回任何内容,因为单词对不共享任何相同的ID

query = ['foo','barbar']

finaldict = defaultdict(list)

finaldict = {('foo','oof'):['1243','1453']
('foo','rabrab'):['2323']
('barbar','duh'):['6452']}
我一直在按照下面的方法进行操作,但是有没有更简单的方法来实现
最终效果呢?

query = ['foo','barbar']
from collections import defaultdict

dict1 = defaultdict(list)
dict2 = defaultdict(list)

dict1['foo'] = ['1234','1453','2323']; 
dict1['bar'] =['5230']; dict1['barbar'] =['6452']

dict2['1243']=['oof']
dict2['1453']=['oof']
dict2['4239']=['rba']
dict2['2323']=['rabrab']
dict2['6452']=['duh']

tt = defaultdict(defaultdict)
for p in sorted(query):
  for ss in sorted(dict1[p]):
    if len(dict2[ss]) != 0 and dict2[ss] != None:
      tt[p][ss] = dict2[ss]

finaldict = defaultdict(set)

for src in tt:
  for ss in tt[src]:
    for trg in tt[src][ss]:
      finaldict[(src, trg)].add(ss)

print finaldict[('foo','oof')]
上述代码输出:

>>> print finaldict[('foo','oof')]
set(['1453'])
>>> for i in finaldict:
...     print i, finaldict[i]
... 
('foo', 'rabrab') set(['2323'])
('barbar', 'duh') set(['6452'])
('foo', 'oof') set(['1453'])

{('barbar','duh'):'6452',('foo','oof'):'1453',('foo','rabrab'):'2323'}

我真的不理解创建
finaldict
的标准。你能试着描述得更清楚一点吗?更新了
finaldict
的目的,是否更清楚?
{(k1,v):k2 for k1 in dict1 for k2 in dict2 
           for v in dict2[k2] if k2 in dict1[k1]}