2014-02-16 4 views
0

내가 텍스트 파일의 무리를 가지고, 내가 읽을 같은 다른 파일에있는 각 단어 및 출력을 계산해야한다 : (워드) (파일) (양)중복 값을 병합하고 검색하는 방법은 무엇입니까? 그래서

word1 file1 5 
word1 file2 3 
word2 file1 2 
word2 file3 5 

그럼 정렬 할 필요가 그들과 모든 indentical 단어처럼 뭔가, 파일과 금액을 절약 병합 :

word1 file1:5 file2:3 
word2 file1:2 file3:5 

만 모두 검색 단어가 포함 된 파일 이름을 찾기 위해 두 단어로 검색 기능을합니다.

word1 in file1 counted 5 
word2 in file1 counted 2 

I 정렬하지만 여전히 다음과 같이 어쩌면 다음 단계를 수행 할 수 병합하고 (사건을 것 같다) 첫 번째 단계를 수행 한 가정 할 :(

+0

깨진에 의해 당신은 무엇을 의미합니까 그리고 당신의 코드에서 문제 점을 추출하고이를 게시하시기 바랍니다 전체 코드를 읽고 이해하기가 너무 어렵다 – thefourtheye

+0

을 그리고 세미콜론을 사용하지 마십시오?.. 파이썬 코드. 잠시 동안, 나는 이것이 파이썬 공동이 아니라고 생각했다. de : p – thefourtheye

+0

어쩌면 텍스트 파일의 데이터를 목록에 결합하여 집합으로 변환 한 다음 목록으로 되돌릴 수 있습니다 (중복을 제거 할 수 있음). –

답변

0

를 검색 어떻게해야합니까 :

#this is what you start with 
words = [ ('word1', 'file1', 5), 
    ('word1', 'file2', 3), 
    ('word2', 'file1', 2), 
    ('word2', 'file3', 5) ] 

#grouped by words 
simple = {} 
for word, f, count in words: 
    try: simple [word] [f] = count 
    except: simple [word] = {f: count} 

print (simple) 

#find files which contain both w1 and w2 
def findTwoWords (data, w1, w2): 
    files1 = set (data [w1].keys()) 
    files2 = set (data [w2].keys()) 
    return files1 & files2 

print ('"word1" and "word2" appear together in {}'.format (findTwoWords (simple, 'word1', 'word2'))) 
관련 문제