2012-09-23 3 views
1

꼭지점이 0..n-1로 번호가 매겨진 그래프를 읽고 싶습니다. 나는 다음과 같은 코드를 시도 :목록의 독립적 인 목록을 만드는 방법

myfile = open('test.in', 'r') 
n = int(myfile.readline()) 
graph = [[]]*n 
for line in myfile: 
    u, v, w = map(int, line.strip().split(' ')) 
    graph[u].append((v, w)) 
print graph 

을하지만 잘 작동하지 않습니다. 의 모든 요소가 동일하다는 것을 알았습니다! 그리고 나는 그것을 해결하기 위해 다음 코드를 사용

road = [[] for i in xrange(n)] 

그것은 작업을 수행하지만, 그렇게 꽤되지 보인다.

나는 모든 요소가 첫 번째 코드에서 동일 왜이 상황 및 에 더 나은 솔루션이 있다면 을 알고 싶어?

답변

2

당신은

from collections import defaultdict 
graph = defaultdict(list) 

graph = [[]]*n이 작동하지 않는 이유는이 같은 목록에

+0

덕분에 많은 많은 참조를 만드는 후 하나의 빈 목록을 작성되고 있다는 점이다 사용할 수 있습니다. 나는 전에'defaultdict'를 사용 했었지만, 그 목록은 vertexes가 0..n-1로 번호 지어 졌기 때문에 dict보다 조금 빠를 것이라고 생각합니다. 내가 맞습니까? – abcdabcd987

+2

@ abcdabcd987, "빠름"및 "매우"직교하지 않습니다. 종종 다른 사람을 위해 거래하거나 타협점을 찾아야합니다. –

관련 문제