GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Hello-Python/Hello-Python/Basic/07_dicts.py at main · mrtngrsbch/Hello-Python Expand file tree/ Copy path07_dicts.pyMore file actions 106 lines (86 loc) · 3.53 KB / Copy path07_dicts.pyFile metadata and controls106 lines (86 loc) · 3.53 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 """ Clase 07 — Diccionarios (mapeos clave→valor) Propósito pedagógico: - Entender los diccionarios como mapeos de claves hashables a valores. - Practicar creación, acceso, inserción, actualización y eliminación. - Usar vistas: .keys(), .values(), .items() y utilidades como .get(), .update(), .fromkeys(). - Evitar errores típicos: KeyError, confundir pertenencia de claves vs. valores, claves no hashables. Cómo usar este archivo: - Ejecuta el script para ver pequeñas demostraciones impresas en consola. - Úsalo como referencia rápida y base para experimentar. """ # Pequeñas demostraciones def demo_basicos() -> None: print("\n== Básicos ==") d_vacio = dict() otro_vacio = {} persona = { "Nombre": "Brais", "Apellido": "Moure", "Edad": 35, "Lenguajes": {"Python", "Swift", "Kotlin"}, 1: 1.77, } print(type(d_vacio).__name__, type(otro_vacio).__name__) print(len(persona)) def demo_acceso_y_busqueda() -> None: print("\n== Acceso y búsqueda ==") d = {"Nombre": "Brais", "Apellido": "Moure", 1: 1.77} print(d[1], d["Nombre"]) # KeyError si la clave no existe print("'Apellido' in d?", "Apellido" in d) # pertenencia sobre claves print("'Moure' in d?", "Moure" in d) # False: no busca en valores print("get('Altura', 'N/D') ->", d.get("Altura", "N/D")) def demo_insercion_actualizacion() -> None: print("\n== Inserción y actualización ==") d = {"Nombre": "Brais"} d["Calle"] = "Calle MoureDev" # inserción d["Nombre"] = "Pedro" # actualización d.update({"Edad": 35}) print(d) def demo_eliminacion() -> None: print("\n== Eliminación ==") d = {"Nombre": "Brais", "Calle": "X"} eliminado = d.pop("Calle", None) # seguro si no existe print("pop ->", eliminado, d) # del d["Calle"] # KeyError si no existe d.clear() print("len tras clear:", len(d)) def demo_claves_valores_items() -> None: print("\n== Claves, valores e items ==") d = {"Nombre": "Brais", "Apellido": "Moure", "Edad": 35} print(list(d.keys())) print(list(d.values())) print(list(d.items())) def demo_fromkeys_y_copias() -> None: print("\n== fromkeys y copias ==") llaves = ["Nombre", "Edad", "Pais"] d1 = dict.fromkeys(llaves) # valores por defecto None d2 = dict.fromkeys(llaves, "N/D") # ¡ojo!: mismo objeto si es mutable copia = d2.copy() # copia superficial print(d1, d2, copia) def demo_casos_avanzados() -> None: print("\n== Casos avanzados ==") # Evitar claves no hashables (como listas/dicts) d = {("Brais", "Moure"): 1} # tuplas sí son hashables si son inmutables print(d) if __name__ == "__main__": demo_basicos() demo_acceso_y_busqueda() demo_insercion_actualizacion() demo_eliminacion() demo_claves_valores_items() demo_fromkeys_y_copias() demo_casos_avanzados() # Bloque de práctica guiada (descomentarlo si quieres practicar) # Ejercicio: dado un texto, calcula la frecuencia de cada palabra usando un dict. # texto = "hola hola que tal hola que" # frec = {} # for palabra in texto.split(): # frec[palabra] = frec.get(palabra, 0) + 1 # print(frec) # {'hola': 3, 'que': 2, 'tal': 1} # Checklist mental # - Pertenencia con 'in' va sobre claves, no sobre valores # - Acceso seguro: .get(clave, default) # - Mutaciones: asignación directa, .update(), .pop() # - Vistas: .keys(), .values(), .items() # - Claves deben ser hashables (inmutables) |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |