2013-10-12 3 views
0

안녕하세요, va 및 vb에 새 값을 추가 할 때를 제외하고 코드를 잘 인쇄하는 그래프의 인접 목록을 작성하는 다음 코드는 오래된 키를 덮어 씁니다. 그 꼭지점 0 1과 2에 인접한 찾을 경우, 나는 둘 다 추가하려면 대신 1 2 덮어 씁니다. 또한 다른 삽입 메서드를 사용하여 시도하고 오류 0,있는 사전에있는 키가 있습니다. 해당 색인 :Python Dict, 동적 삽입

def caminhografo(grafo, va, vb): 
    vat = vertex 
    i = 0 
    a = 0 
    z = 0 
    va = int(va) 
    vb = int(vb) 
    x = len(grafo.node) 
    if va < vb: 
     for va in range (vb+1): 
      a = 0 
      x = len(grafo.node) 
      for a in range (x): 
       if [int(va),int(a)] in grafo.node: 
        vat.adj[va] = a 

    if va > vb: 
     while vb > va: 
      a = 0 
      x = len(grafo.node) 
      for a in range (x): 
       if[int(vb),int(a)] in grafo.node: 
        vat.adj[vb] = a 
      vb = vb - 1 
    print (vat.adj) 

어떻게 역동적으로 키에 삽입 할 수 있습니까? 여기

는 정점과 GRAFO 그래프 클래스입니다 : 어떤 도움

class graph: 
    v = 0 
    a = 0 
    node = [] 

class vertex: 
    adj = {} 

감사합니다.

+2

'if va> vb'는'while vb> va '에서 어떻게 작동합니까? 나는 당신이 루프에 들어갈 수 없다고 생각했을 것입니다. – hughdbrown

+0

'vat.adj'는 어떤 종류의 객체입니까? 'vat'는 전역 변수'vertex'에 대한 참조 인 것처럼 보입니다. 그러나 그것은 저에게 도움이되지 않습니다. – Blckknght

+0

항목이 해당 조건에있는 경우 작동하며 va 및 vb 중 하나가 다른 것보다 높거나 전혀 제공되지 않습니다. 첫 번째 작업의 역순으로 작업하는 것이 좋습니다. – Rex

답변

0

defaultdict를 사용하면 작업이 완료됩니다. 그 후

vat = defaultdict(list) 

, 그것은 트릭 한에 추가하여 :

vat[va].append(a)

그것을 대신 클래스 정점을 사용하는

from collections import defaultdict 

그런 다음, 나는 단순히 defaultdict (목록)를 작성 추가가 일어나지 않을 것이기 때문에 무차별 한리스트를 작성하는 것이 효과가 없었던 것 같습니다. 그러나 가져 오기에서 목록의 기본 사전을 사용하여 해당 문제를 해결했습니다.

0

당신은 목록 vat.adj[i] = []vat.adj에서 각 값을 선언하고 당신은 당신이 정점 모든 목록으로 vat.adj의 각 항목을 초기화 할 필요가 vat.adj[vb].append(a)

메모를 할 수 있습니다.

for i in range(n): 
    vat.adj[i] = [] 
+0

[0, 1], [1, 0], [0, 2], [2, 0]] 다음과 같은 호가 있다면 {0 : [2, 2], 1 : [0, 0], 2 : [0, 0]} 이는 0 : [1,1]을 덮어 쓴다는 의미로도 도움이되지 않는 색인을 인쇄하고 있습니다. – Rex

+0

당신은'vat.adj [0] .append (1)'을 할 때'0 : [2,2]'를'0 : [1,1]'로 덮어 쓸 것입니다. 내가 APPEND를 사용하는 경우 –

+0

나는 다음과 같은 오류가 발생합니다 : AttributeError를 'INT'개체가 어떤 속성이 추가]입니다 를 '추가'가 없습니다 : vat.adj를 [VA]으로 .Append (A) @Rex 편집 – Rex