2014-07-25 3 views
1

"terms.txt"라는 텍스트 파일을 읽은 다음 파일을 정렬하고 참조 번호와 함께 페이지 번호를 인쇄하는 프로그램을 작성해야합니다.텍스트 파일을 읽고 데이터를 해석합니다.

3:degree 
54:connected 
93:adjacent 
54:vertex 
19:edge 
64:neighbor 
72:path 
55:shortest path 
127:tree 
99:spanning tree 
19:path 
28:connected 
3:degree 
55:graph 
64:adjacent 
44:breadth first search 
77:neighbor 
55:degree 
55:depth first search 
19:degree 
27:neighbor 
16:Spanning Tree 

이이 프로그램을 통해 실행 된 후처럼 좋아한다 무엇 :이 주어진 같은 파일이 모습입니다 지금

adjacent, 64, 93 
breadth first search, 44 
connected, 28, 54 
degree, 3, 19, 55 
depth first search, 55 
edge, 19 
graph, 55 
neighbor, 27, 64, 77 
path, 19, 72 
shortest path, 55 
spanning tree, 16, 99 
tree, 127 
vertex, 54 

, 이것이 내가 가지고 그냥 인쇄 무엇 페이지 번호 목록과 참조 목록 ... 여기에서 어디로 가야할지 모르겠습니다. 아무거나는 도울 것이다!

def bookIndex2(): 
    indexList = [] 
    pageNum = [] 
    file = open('terms.txt', 'r') 
    for line in file: 
     pageNumber, reference = line.split(':') 
     pageNum.append(pageNumber) 
     indexList.append(reference) 
    indexList.sort() 
    print(pageNum) 
    print(indexList) 

답변

0

결과는 사전의 내용과 비슷합니다. 여기서 키는 용어이고 값은 페이지 번호 목록입니다. 아이디어는 다음과 같을 것입니다. 각 입력 행마다 해당 페이지 번호를 해당 용어 목록에 추가하십시오 (필요한 경우 항목/목록 작성). 사전 중 하나가 채워지면 원하는 출력을 생성하기 위해 키를 살펴보십시오.

+0

사전에 내용을 채우는 가장 좋은 방법은 무엇입니까? – user3367018

1

기본적으로 페이지 번호 목록에 대한 참조를 매핑하는 사전을 사용해야합니다. 파일을 반복 할 때 페이지 번호를 목록에 추가하여 해당 참조를 찾습니다. 전체 파일을 처리했으면 사전 항목을 정렬하고 인쇄하십시오. 표준 사전 대신 collections.defaultdict을 사용하는 것이 좋습니다. 이는 목록 사전을 작성하는 것이 좋습니다.

from collections import defaultdict 

index = defaultdict(list) 
with open('terms.txt') as f: 
    for line in f: 
     page, reference = line.strip().lower().split(':') 
     index[reference].append(int(page)) 

for reference, pages in sorted(index.items()): 
    print "{}, {}".format(reference, ', '.join(str(i) for i in sorted(pages))) 
0

이것은 도움이 될 수 있습니다.

from collections import defaultdict 

def bookIndex2(): 
    file = open('terms.txt', 'r') 
    occurance_dict = defaultdict(list) 
    for line in file: 
     pageNumber, reference = line.split(':') 
     occurance_dict[reference].append(pageNumber) 
    for term, occurances in sorted(occurance_dict.items()): 
     print [term]+[occurances] 
0

그것은 매우 어려운 숙제입니다 ...

from collections import defaultdict 
def bookIndex2(): 
    file = open('terms.txt', 'r') 
    d = defaultdict(set) 
    for line in file: 
     num, name = line.strip().split(":") 
     d[name.lower()].add(num) 
    print "\n".join(map(", ".join, [[name] + sorted(num, key=int) for name, num in sorted(d.items())])) 

출력 :

adjacent, 64, 93 
breadth first search, 44 
connected, 28, 54 
degree, 3, 19, 55 
depth first search, 55 
edge, 19 
graph, 55 
neighbor, 27, 64, 77 
path, 19, 72 
shortest path, 55 
spanning tree, 16, 99 
tree, 127 
vertex, 54 
0

당신이 이해하기 쉽게 좀 더 간단한 일/찾고 있다면,이 도움이 될 수 있습니다 :)

def bookIndex2(): 
    appendix = {} 

    file = open('terms.txt', 'r') 
    for line in file: 
     pageNumber, reference = line.split(':') 
     reference = reference.rstrip()  "removes \n characters" 

     if reference in appendix: 
      appendix[reference]=appendix[reference]+', '+pageNumber 
     else: 
      appendix.update({reference : pageNumber}) 

    print appendix 

상기 코드 참조를 사전에 키로 저장합니다. 참조가 이미 존재하는 경우 쉼표로 페이지 번호가 기존 참조에 추가됩니다.

관련 문제