У меня есть класс с функцией, которая добавляет ребро к графику в соответствии с заданным вводом.Например: если введено значение add James Larry 1
, будет добавлено ребро между James
и Larry
с весом (уровень близости) 1
.График представляет собой словарь множеств, поэтому ключи - это узел, а значения (множества) - это ребра.
Итак, эта функция имеет в качестве параметров: источник, пункт назначения и вес.Класс представлен ниже:
class DiGraph(object):
# Create an empty graph.
def __init__(self):
## A dictionary that stores an entry of a node, as the key, and a set of outgoing edges
# (destination node, weight) from the node, as its value.
self.graph = {}
## Total number of edges in the graph.
self.__numEdges = 0
## The largest edge distance.
# self.__infinity = sys.maxint
self.__infinity = sys.maxsize
## Holds the path from a source node to a given node.
self.__pathToNode = None
## Accumulated distance from source to a node.
self.__dist = None
### (...)
def addEdge(self, src, dst, c=1):
if ( src == None or dst == None or c <= 0 or src == dst ):
return False
# the edge set of src
eSet = self.graph.get(src)
e = Edge(dst,c) # new edge
if eSet == None:
# no edge starting at src, so create a new edge set
eSet = set()
self.__numEdges += 1
else:
ed = self.getEdge(src,dst)
if ( ed != None ):
ed.setCost(c)
return True
else:
self.__numEdges += 1
eSet.add(e) # a set does not have duplicates
self.graph[src] = eSet
if not self.hasVertex(dst):
self.addVertex(dst)
return True
Я пытаюсь реализовать этот код:
import DiGraph
#Create an empty graph
def main():
aGraph = {}
f = open("infile.txt")
contents = f.read()
lines = contents.splitlines()
word = []
for line in lines:
word.append(line.split())
for i in range(len(word)):
if word[i][0] == 'add':
aGraph = DiGraph.DiGraph.addEdge(word[i][1], word[i][2], int(word[i][3]))
return aGraph
grafo = main()
И первая строка файла: add James Larry 1
Эта ошибка показывается мне, когда я пытаюсь запустить этот код:
Traceback (последний последний вызов):
File "C: /.../SocialGraph.py ", строка 24, в
grafo = main ()
Файл" C: /.../ SocialGraph.py ", строка 20, вmain
aGraph = DiGraph.DiGraph.addEdge (word [i] [1], word [i] [2], int (word [i] [3]))
Файл "C: ... \ DiGraph.py", строка 156, в addEdge
eSet = self.graph.get (src)
AttributeError: у объекта 'str' нет атрибута 'graph'
Что я могу сделать, чтобы исправить это?