class DiccionarioOrdenado(): def __init__(self): self.keys = MiLista() @property def values(self): x = MiLista() for key, value in self: x.append(value) return x def append(self, key, valor): # genera una lista si la key ya existe if hasattr(self, str(key)): if type(getattr(self, str(key))) != MiLista: setattr(self, str(key), MiLista(getattr(self, str(key)))) getattr(self, str(key)) + valor else: self.__setitem__(str(key), valor) def get_by_position(self, position): return self[self.keys[position]] def get_key(self, valor): for key, valors in self: if valors == valor: return key return None def pop(self, posicion=0): dict = DiccionarioOrdenado() i = 0 for key, value in self: if i != posicion: dict.append(key, value) else: llave, valor = key, value i += 1 self.change_dictionary(dict) return llave, valor def sort_values(self): x = DiccionarioOrdenado() valores = self.values.sort() for j in valores: key = self.get_key(j) x[key] = j self.change_dictionary(x) return self def change_dictionary(self, dictionary): for key, valor in self: delattr(self, key) self.keys = MiLista() for key, value in dictionary: self.append(key, value) def __iter__(self): for key in self.keys: yield key, getattr(self, key) def __len__(self): return len(self.keys) def __setitem__( self, key, valor): # si ya existe la key, entonces le modifica el valor if not hasattr(self, str(key)): self.keys.append(str(key)) setattr(self, str(key), valor) def __getitem__(self, key): for keys in self.keys: if str(key) == keys: return getattr(self, str(key)) return None def __repr__(self): x = "{" y = "}" for key, valor in self: x += "'{}'".format(str(key)) + ": " + str(valor) + ", " if len(x) != 1: x = x[:-2] return x + y
def values(self): x = MiLista() for key, value in self: x.append(value) return x
connections_generator.generate_connections() grafo_tierra = borders_to_dict() grafo_aire = airports_to_dict() pais_poblacion = csv_to_dict_of_dicts("population.csv") # se crean todos los paises con sus respectivos habitantes y fronteras. # (estado inicial) for pais, informacion in pais_poblacion: mundo.append(pais, Pais(nombre=pais, habitantes=int(informacion[ "Poblacion"]), frontera=grafo_tierra[pais], aeropuerto=grafo_aire[pais])) menupais = Menu() x = MiLista() i = 1 for key, _ in pais_poblacion: x.append(menupais.append(str(i), key)) i += 1 nombre_pais_inicio = menupais.display() # string pais_inicio = mundo[nombre_pais_inicio] # pais menuinfeccion = Menu("Virus", "Bacteria", "Parásito") infeccion = menuinfeccion.display() # string pais_inicio.inicio_infeccion(infeccion, dia) # ahora el mundo tiene todos los paises con condicion inicial y un pais # con la infeccion mundo[nombre_pais_inicio] = pais_inicio dia_descubrimiento_infeccion = None dia_descubrimiento_cura = None progreso_al_dia = 0 poseedores_de_cura = MiLista() cola_propuestas = DiccionarioOrdenado()