Bonjour
Ça m'énerve de devoir en venir à poser la question ici parce que je suis certaine que ça ne doit pas être bien compliqué; mais j'y ai passé la journée, et je sens que je ne pourrai pas dormir tant que je n'aurai pas résolu mon problème -_-
Alors le voilà, mon problème :
J'ai une liste d'arêtes de la forme [(nom_arête, sommet_1, sommet_2, poids_arête)]. Pour pouvoir appliquer mon Dijkstra, je veux transformer cette liste en dictionnaire de dictionnaires.
Un exemple, soit la liste d'arêtes suivante :
Et je veux construire le dictionnaire suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part listeArete = [(1,'a','b',30),(2,'b','d',5),(3,'d','e',10),(4,'d','c',5), (5,'a','c',25), (6,'a','e',60), (7,'f','e',15), (8,'b','c',15),(9,'c','e',30)]
J'ai essayé beaucoup beaucoup de choses différentes, et du coup je n'y comprends plus grand chose. Par exemple, tout simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 graphe = {'a': {'c': 25, 'b': 30, 'e' : 60}, 'b': {'d' : 5, 'c' : 15}, 'c': {'d' : 5, 'e' : 30}, 'd': {'e': 10}, 'f': {'e': 15}, 'e': {}, }
Cela me renvoit la chose suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for i in range(len(listeArete)): sousDico = {} sousDico[listeArete[i][2]] = listeArete[i][3] print sousDico graphe[listeArete[i][1]] = sousDico print graphe
Tout se passe bien jusqu'à la ligne 8, où, au lieu d'ajouter la nouvelle valeur de "a" à son sous-dictionnaire correspondant, le sous-dictionnaire en question est écrasé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 {'b': 30} {'a': {'b': 30}} {'d': 5} {'a': {'b': 30}, 'b': {'d': 5}} {'e': 10} {'a': {'b': 30}, 'b': {'d': 5}, 'd': {'e': 10}} {'c': 5} {'a': {'b': 30}, 'b': {'d': 5}, 'd': {'c': 5}} {'c': 25} {'a': {'c': 25}, 'b': {'d': 5}, 'd': {'c': 5}} {'e': 60} {'a': {'e': 60}, 'b': {'d': 5}, 'd': {'c': 5}} {'e': 15} {'a': {'e': 60}, 'b': {'d': 5}, 'd': {'c': 5}, 'f': {'e': 15}} {'c': 15} {'a': {'e': 60}, 'b': {'c': 15}, 'd': {'c': 5}, 'f': {'e': 15}} {'e': 30} {'a': {'e': 60}, 'c': {'e': 30}, 'b': {'c': 15}, 'd': {'c': 5}, 'f': {'e': 15}}
En fait, il suffirait de concaténer le sousDico courant avec le sous-dictionnaire de la clef courante / d'ajouter une nouvelle clef et une nouvelle valeur au sous-dictionnaire; mais je n'y parviens pas.
Est-ce que quelqu'un voit la grosse bêtise que je fais quelque part ou bien aurait une idée ?
Merci beaucoup
Ah zut, j'me suis gourée d'emplacement -___-
Partager