단어로 구성된 source.txt 파일이 있습니다. 각 단어는 새 줄에 있습니다.다차원 사전을 만들어 단어 발생을 계산하십시오.
apple
tree
bee
go
apple
see
또한 taget_words.txt 파일도 있습니다.이 파일의 단어도 한 줄씩 있습니다.
apple
bee
house
garden
eat
는 지금은 소스 파일의 대상 각각의 단어를 검색 할 수 있습니다. 타겟 단어가 발견되면, 예를 들어. 사과, 대상 단어에 대한 사전 항목 및 앞뒤 3 단어 각각을 작성해야합니다. 예제의 경우, 그 것이다
words_dict = {'apple':'tree', 'apple':'bee', 'apple':'go'}
어떻게 생성하고 이전과 source_file에 기입 한 후이 세 단어를 고려하는 사전을 채우기로 파이썬을 알 수 있습니까? 제 아이디어는 목록을 사용하는 것이 었습니다. 그러나 파일이 수백만 단어로 구성되어 있기 때문에 코드는 매우 효율적이고 빠르다는 것이 이상적입니다. 나는리스트를 가지고 계산이 매우 느릴 것이라고 생각한다.
from collections import defaultdict
words_occ = {}
defaultdict = defaultdict(words_occ)
with open('source.txt') as s_file, open('target_words.txt') as t_file:
for line in t_file:
keys = [line.split()]
lines = s_file.readlines()
for line in lines:
s_words = line.strip()
# if key is found in s_words
# look at the 1st, 2nd, 3rd word before and after
# create a key, value entry for each of them
나중에, 나는 각 키 값 쌍의 발생을 계산하고 별도의 사전에 번호를 추가 할 필요가 나는 defaultdict 시작, 그 이유이다.
나는 위의 코드에 대한 제안 사항에 대해 기뻐할 것입니다.
이 작업을 수행하는 방법에 대한 단서가 전혀 없다면 Python 용 사전을 읽어 보시기 바랍니다. https : //docs.python.org/3.5/tutorial/datastructures.html#dictionaries – MooingRawr
".. apple이라는 단어에 대한 다차원 사전을 만듭니다. 그것은 정확하게 (당신에게) 정확히 무엇을하려고하는지 명확하지 않습니다. – asherbar
당신이 묘사하는 것은 "다차원"사전처럼 들리지 않습니다. 파일의 각 줄을 읽고 원하는 구조를 점진적으로 빌드하는 'for' 루프로 시작하는 것이 좋습니다. 이제 시작하는 법을 알았습니다! – martineau