Bonjour,

Je suis débutant en Python et j'ai un problème dans mon code que voici :

# *-coding:Utf-8 -*

class vertex:

def __init__(self, name, value):
self.name = name
self.buddies = dict()
self.value = value

def __str__(self):
return str(self.name)

class Graph:

def __init__(self, name, vertices):

self.vertices = vertices
self.name = name

def Dijkstra(G, source):

sPaths = [(float('inf'), None)]*len(G.vertices)

sPaths[source.value] = 0

pivot = source

papas = [None]*len(G.vertices)

done = []

while len(done) != (len(G.vertices)-1):
for buddy in pivot.buddies.keys():
if(sPaths[buddy.value] > sPaths[pivot.value] + pivot.buddies[buddy]):
sPaths[buddy.value] = sPaths[pivot.value] + pivot.buddies[buddy]
papas[buddy.value] = pivot
done.append(pivot)
for path in sPaths:
if path[0] == min(sPaths)[0]:
pivot = path[1]

for path in sPaths:
print("distance de "+str(source)+"à "+ str(path[1])+"= "+path[0]+"\n")

A = vertex("A", 0)
B = vertex("B", 1)
C = vertex("C", 2)
D = vertex("D", 3)
E = vertex("E", 4)
S = vertex("S", 5)

E.buddies = {A:3, B:1}
A.buddies = {E:3, B:1, C:3}
B.buddies = {E:1, A:1, C:3, D:5}
C.buddies = {A:3, B:3, D:1, S:3}
D.buddies = {B:5, C:1, S:1}


G = Graph("G", [A, B, C, D, E, S])

Dijkstra(G,E)

Le rapport d'erreur est le suivant :

File "Dijkstra.py", line 61, in <module>
Dijkstra(G,E)
File "Dijkstra.py", line 39, in Dijkstra
if path[0] == min(sPaths)[0]:
TypeError: 'int' object has no attribute '__getitem__'

Je suis désolé par avance si la solution est évidente mais j'ai fait des tests intermédiaires et a priori la méthode min renvoie bien un tuple alors je ne comprends pas pourquoi min(sPaths)[0] renvoie une erreur. Merci à tous ceux qui prendront le temps de réfléchir à mon problème.

Cordialement