Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
KEYERROR EN GRAFOS
#1
Buenos días, tengo un problema de key error al realizar una Busqueda en anchura en grafos, pues me da un keyerror, os agradecería si me piudierais ayudar, gracias.

  1. import os
  2.  
  3. grafo = {'2'[(1, 10), (3, 7)],
  4.             '1'[(2, 10), (3, 15), (6, 5)],
  5.             '3'[(1, 15), (2, 7), (4, 7), (6, 10)],
  6.             '6'[(1, 5), (3, 10), (4, 5), (5, 13)],
  7.             '4'[(3, 7), (5, 7), (6, 5)],
  8.             '5'[(4, 7), (6, 13)]
  9.         }
  10.  
  11. #MUESTRA EL GRAFO ANTES DEL RECORRIDO
  12. print("Muestra el grafo antes del recorrido: \n")
  13. for key, lista in grafo.items():
  14.     print(key)
  15.     print(lista)
  16.  
  17. print()
  18. os.system("pause")
  19.         
  20. visitados = []
  21. cola = []
  22.  
  23. origen = input("Ingresa el nodo origen: ")
  24. print("\nLista de recorrido en anchura\n")
  25. #Paso 1: SE COLOCA EL VÉRTICE ORIGEN EN UNA COLA
  26. cola.append(origen)
  27. #Paso 2: MIENTRAS LA COLA NO ESTE VACÍA
  28. while cola:
  29.     #paso 3: DESENCOLAR UN VÉRTICE, ESTE SERÁ AHORA EL VÉRTICE ACTUAL
  30.     actual = cola.pop(0)
  31.  
  32.     #paso 4: SI EL VÉRTICE ACTUAL NO HA SIDO VISITADO
  33.     if actual not in visitados:
  34.         #paso 5: PROCESAR (IMPRIMIR) EL VÉRTICE ACTUAL
  35.         print("Vertice actual -> ", actual)
  36.         #paso 6: COLOCAR VÉRTICE ACTUAL EN LA LISTA DE VISITADOS
  37.         visitados.append(actual)
  38.     #paso 7: PARA CADA VÉRTICE QUE EL VÉRTICE ACTUAL TIENE COMO DESTINO,
  39.     #        Y QUE NO HA SIDO VISITADO:
  40.     #        ENCOLAR EL VERTICE
  41.     for key, lista in grafo[actual]:
  42.         if key not in visitados:
  43.             cola.append(key)
  44.  
  45. print()
  46. os.system("pause")


Error: 

Lista de recorrido en anchura

Vertice actual ->  2

Vertice actual ->  1

Traceback (most recent call last):

  File "c:/Users/K/OneDrive/Escritorio/Ejercicios/Banchura.py", line 50, in <module>

    for key, lista in grafo[actual]:
Keyerror: 1
Responder
#2
Hola, bienvenido.

El problema es que tu variable actual es un entero, pero las claves del diccionario grafo son cadenas. Podrías solucionarlo haciendo una pequeña conversión:

  1. for key, lista in grafo[str(actual)]:


O capaz ni siquiera haya necesidad de que definas las claves como cadenas.

Saludos!
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!
Responder
#3
(22-05-2020, 08:38 PM)Francisco escribió: Hola, bienvenido.

El problema es que tu variable actual es un entero, pero las claves del diccionario grafo son cadenas. Podrías solucionarlo haciendo una pequeña conversión:

  1. for key, lista in grafo[str(actual)]:


O capaz ni siquiera haya necesidad de que definas las claves como cadenas.

Saludos!

Muchisimas gracias ya conseguí que funcione  Rolleyes
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)