GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Hello-Python/Hello-Python/Basic/07_dicts.py at main · mrtngrsbch/Hello-Python

Expand file tree

/

07_dicts.py

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
106 lines (86 loc) · 3.53 KB
/

07_dicts.py

Copy path

File metadata and controls

106 lines (86 loc) · 3.53 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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.