Generally graphs are represented as a list of edges; they can be used as undirected or directed graphs
edges = [(0, 1), (1, 3), (0, 3), (2, 1)] # without edge values
edges = [(0, 1, 1), (1, 3, 2), (0, 3, 6), (2, 1, 1)] # with edges values
A class can be used to store the information
class Graph:
def __init__(self, edges):
self.edges = edges
In an object dictionnary
from collections import defaultdict
# directed Graph
graph = defaultdict(list)
for i, j, w in edges:
graph[i].append((j, w))
# undirected Graph
graph = defaultdict(list)
for i, j, w in edges:
graph[i].append((j, w))
graph[j].append((i, w))
Or a class can be used
from collections import defaultdict
# directed Graph
class Graph:
def __init__(self, edges):
self.graph = defaultdict(list)
for i, j, w in edges:
self.graph[i].append((j, w))
# undirected Graph
class Graph:
def __init__(self, edges):
self.graph = defaultdict(list)
for i, j, w in edges:
self.graph[i].append((j, w))
self.graph[j].append((i, w))