0
첫 번째 파일에서 쿼리 단어 목록이 주어진 finaldict
을 얻을 수있는 defaultdict가 필요합니다.defaultdict (list)를 재 작성하는 방법 - 파이썬
마지막 dict는 동일한 ID를 공유하는 두 파일의 단어 쌍 사전입니다. 예 : foo, oof
은 동일한 1243
과 1453
ID를 공유합니다. 나중에 단어 쌍 검색을 돕기 위해 ('foo','oof')
을 검색하려고하면 ['1243','1453']
을 반환합니다. 최종 결과를 ('foo','duh')
으로 검색하면 단어 쌍이 동일한 ID를 공유하지 않으므로 아무 것도 반환하지 않습니다.
query = ['foo','barbar']
finaldict = defaultdict(list)
finaldict = {('foo','oof'):['1243','1453']
('foo','rabrab'):['2323']
('barbar','duh'):['6452']}
나는 다음과 같이 그 일을 한 적이 있지만 는 finaldict
을 달성하는 간단한 방법은 무엇입니까?
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'])
'finaldict '를 만드는 기준을 정말로 이해하지 못합니다. 좀 더 잘 설명해 주시겠습니까? – mgilson
은'finaldict'의 목적을 업데이트했습니다. 명확합니까? – alvas